Angular 2 路由限制 AngularFire 2 Auth

Angular 2 route restriction with AngularFire 2 Auth

我正在尝试将路由限制为仅对经过身份验证的用户可用。到目前为止,我已经在每个路由组件构造函数中添加了一个服务调用来检查用户是否已登录。如果没有,您将被重定向到登录路由(索引):

logCheck(){
  this.af.auth.subscribe(user => {
    if(!user){
      this.router.navigate(['']);
    }
});

有效。但是我不确定为此使用每个路由组件的构造函数是否是正确的做事方式,因为您实际上是在被踢出之前加载组件。 有更好的方法吗?就像在 app.routes const 中使用额外的参数一样?

您可以使用守卫,它遵循相同的逻辑但与路由器一起使用,这样当有人尝试访问路由时,如果服务布尔值未设置为真,您就会被重定向。

查看 angular.io 路由器文档的这一部分:https://angular.io/docs/ts/latest/guide/router.html#!#guards

有关于如何操作的示例,但是根据您已经完成的操作应该会非常快。