0

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

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

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

4

1 回答 1

3

您可以使用遵循相同逻辑但与路由器一起使用的 Guard,以便当有人尝试访问路由时,如果服务布尔值未设置为 true,那么您将被重定向。

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

有一些关于如何做到这一点的例子,但你已经完成了它应该很快。

于 2016-08-27T21:47:03.467 回答