我创建了 2 个路由守卫...一个用于检查用户是否已登录,另一个用于检查用户是否未经身份验证
当应用程序启动时,它会在查找本地存储 cookie 时非常短暂地确定用户不存在,因此显示未经身份验证的页面(即登录页面)
我想知道解决这个问题的最佳方法是什么 - 在我看来,使用 observale 来查看用户是否登录的 authguard 是最好的方法,但是在代码运行时会出现无法确定的瞬间,并且它想展示一些东西。
任何人都有类似的问题/创造性的解决方案来解决它。
最佳答案
几个月前我遇到了同样的问题,我通过创建一个 Auth Guard 并返回一个 promise 来解决它......
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);
}
});
});
}
应用程序在等待此 promise 决定将用户引导到何处时,会继续正常加载。
您可以在此处观看有关创建身份验证守卫的精彩视频... https://www.youtube.com/watch?v=RxLI9_ub6PM
关于ionic-framework - Ionic - 应用程序启动时闪烁错误的起始页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56701565/