Angularfire2 AuthGuard说明

时间:2016-10-11 23:57:08

标签: angular angularfire2

我是Angular的新手,我正在尝试了解如何在用户登录时设置AuthGuard以阻止某些路由。我在搜索时找到了这段代码并且确实有效。但是我不完全理解代码在做什么。如果有人能够解释一切在这里做什么,那将是一个巨大的帮助。谢谢!

constructor(private auth: FirebaseAuth, private router: Router) {}
   canActivate(): Observable<boolean> {
    return this.auth
      .take(1)
      .map((authState: FirebaseAuthState) => !!authState)
      .do(authenticated => {
        if (!authenticated) this.router.navigate(['']);
      });
   }

1 个答案:

答案 0 :(得分:0)

当Angular 2路由器尝试访问路由时,它会评估添加到配置中路由的所有防护的'canActivate'方法。

如果其中一个守卫返回false,或者在订阅时返回一个评估为false的observable,则会阻止路由器访问此页面。