我创建了2个路由防护...一个用于检查用户是否已登录,另一个用于检查用户是否未经身份验证
应用启动后,非常简短地它会在查找本地存储cookie的同时确定该用户不存在,并显示未认证页面(即登录页面)
我想知道什么是解决此问题的最佳方法-在我看来,带观察员的authguard观察用户是否登录是最好的方法,但是在代码运行时瞬间无法确定并它想展示一些东西。
任何人都有类似的问题/解决方案。
答案 0 :(得分:2)
几个月前,我遇到了同样的问题,我通过创建一个Auth Guard并返回一个诺言来解决了这个问题...
auth.guard.ts
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot,
): Observable<boolean> | Promise<boolean> | boolean {
return new Promise(resolve => {
const userAuthObs = this.afAuth.user.subscribe(user => {
if (user) {
resolve(true);
} else {
this.router.navigate(['signup']);
resolve(false);
}
});
});
}
在等待此承诺决定将用户定向到何处时,该应用程序将继续正常加载。
您可以在此处观看有关创建身份验证卫士的精彩视频... https://www.youtube.com/watch?v=RxLI9_ub6PM