在 Angular 8 中的每个 ngOnInit 中(有条件地和隐式地)强制导航
Forcing a navigation in every ngOnInit (conditionally and implicitly) in Angular 8
我的服务中有一个变量 token。目前,它决定我是否通过身份验证。当应用程序需要检查用户是否已登录时,它会询问应用程序 !!this.security.token
并做出相应的反应。这需要发生在每个安全组件中。
ngOnInit() {
if (!this.security.token)
this.router.navigate(["/login"]);
...
}
我想知道是否有更好的方法来处理这个问题。我正在比较添加 headers 并记录到我的 GET 和 POST 的 HTTP 拦截器,这非常方便。然而,谷歌搜索 interceptor angular router 只给出了 HTTP 注入的命中,与控制路由无关。
有没有办法拦截对每个组件的调用,检查 token 是否仍然存在?
export class SomeComponent implements OnInit {
constructor(
private security: SecurityService,
private router: Router,
private route: ActivatedRoute) { }
id: string;
ngOnInit() {
if (!this.security.token)
this.router.navigate(["/"]);
this.route.params
.subscribe(suc => this.id = suc.id);
}
}
正如其他人之前提到的,Angular 提供 route guard 检查特定用户是否启用或未启用在该路线上导航。
您还可以在路线上实施自定义验证。
我的服务中有一个变量 token。目前,它决定我是否通过身份验证。当应用程序需要检查用户是否已登录时,它会询问应用程序 !!this.security.token
并做出相应的反应。这需要发生在每个安全组件中。
ngOnInit() {
if (!this.security.token)
this.router.navigate(["/login"]);
...
}
我想知道是否有更好的方法来处理这个问题。我正在比较添加 headers 并记录到我的 GET 和 POST 的 HTTP 拦截器,这非常方便。然而,谷歌搜索 interceptor angular router 只给出了 HTTP 注入的命中,与控制路由无关。
有没有办法拦截对每个组件的调用,检查 token 是否仍然存在?
export class SomeComponent implements OnInit {
constructor(
private security: SecurityService,
private router: Router,
private route: ActivatedRoute) { }
id: string;
ngOnInit() {
if (!this.security.token)
this.router.navigate(["/"]);
this.route.params
.subscribe(suc => this.id = suc.id);
}
}
正如其他人之前提到的,Angular 提供 route guard 检查特定用户是否启用或未启用在该路线上导航。
您还可以在路线上实施自定义验证。