繁体   English   中英

在 Angular 8 中的每个 ngOnInit(有条件和隐式)中强制导航

[英]Forcing a navigation in every ngOnInit (conditionally and implicitly) in Angular 8

我的服务中有一个可变令牌 目前,它决定我是否通过身份验证。 当应用程序需要检查用户是否登录时,它会询问应用程序!!this.security.token并做出相应的反应。 这需要发生在每个安全组件中。

ngOnInit() {
  if (!this.security.token)
    this.router.navigate(["/login"]);
  ...
}

我想知道是否有更好的方法来处理这个问题。 我正在比较向我的 GET 和 POST 添加标头和日志记录的 HTTP 拦截器,这非常方便。 然而,谷歌搜索拦截器角度路由器只给出了 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 提供了路由保护来检查特定用户是否已启用或未在该路由上导航。

您还可以在您的路线上实施您的自定义验证。

StackBlitz 示例

随机博客示例

方便的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM