Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular 8中强制在每个ngOnInit中导航(有条件地和隐式地)_Angular_Typescript_Router - Fatal编程技术网

在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)。我冒昧地修改了您的答案,以使其更完整,以供未来的访问者使用。希望你没事。