我是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(['']);
});
}
答案 0 :(得分:0)
当Angular 2路由器尝试访问路由时,它会评估添加到配置中路由的所有防护的'canActivate'方法。
如果其中一个守卫返回false,或者在订阅时返回一个评估为false的observable,则会阻止路由器访问此页面。