在Angular 8中强制在每个ngOnInit中导航(有条件地和隐式地)
我的服务中有一个可变令牌。目前,它决定了我是否被认证。当应用程序需要检查用户是否已登录时,它会询问应用程序在Angular 8中强制在每个ngOnInit中导航(有条件地和隐式地),angular,typescript,router,Angular,Typescript,Router,我的服务中有一个可变令牌。目前,它决定了我是否被认证。当应用程序需要检查用户是否已登录时,它会询问应用程序!!这个.security.token,并相应地做出反应。这需要在每个安全组件中发生 ngOnInit() { if (!this.security.token) this.router.navigate(["/login"]); ... } 我想知道是否有更好的方法来处理这个问题。我正在比较HTTP拦截器,它将头和日志添加到GET和POST中,这非常方便。然而,谷歌截取器
!!这个.security.token
,并相应地做出反应。这需要在每个安全组件中发生
ngOnInit() {
if (!this.security.token)
this.router.navigate(["/login"]);
...
}
我想知道是否有更好的方法来处理这个问题。我正在比较HTTP拦截器,它将头和日志添加到GET和POST中,这非常方便。然而,谷歌截取器angular router只对HTTP注入进行了点击,而对控制路由则一无所知
是否有办法拦截对每个组件的调用,检查令牌是否仍然存在
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提供了检查特定用户是否能够在该路线上导航的功能 您还可以在路由上实现自定义验证
Angular提供路线防护,保护您的安全components@JBNizet啊哈,我的无知是罪魁祸首。一旦我使用了interceptor的guard intead,发现列表就足够了。谢谢有趣的是,Angular团队对同一个概念使用了两个不同的名称(好吧,“相同的”ish)。我冒昧地修改了您的答案,以使其更完整,以供未来的访问者使用。希望你没事。