Angular SSR环境下路由守卫引发页面先闪烁加载登录页再跳转目标路由的问题求助
Angular SSR环境下路由守卫引发页面先闪烁加载登录页再跳转目标路由的问题求助
各位大佬好,我在Angular SSR项目里碰到了一个头疼的路由守卫问题,想请大家帮忙分析下!
我写了一个用于校验用户登录状态的路由守卫authorizedUserGuard,代码如下:
export const authorizedUserGuard: CanActivateFn = (route, state) => { console.log('guard call', route, state) const tokenService = inject(TokenStorageService); const router = inject(Router); let user = tokenService.getUser(); let token = tokenService.getToken(); if(!token || !user){ console.log('user not logged in'); tokenService.removeData(); router.navigate(['/home', 'login']); return false; } return true; };
现在遇到的问题是:明明用户已经登录了(token和user变量都有有效值,控制台也完全没打印if分支里的日志),但页面还是会先加载/home/login路由,然后立刻跳转到实际要访问的目标路由,出现了明显的页面闪烁现象。
我还尝试把守卫里的跳转逻辑换成返回UrlTree的方式:
return router.createUrlTree(['/home', 'login']) ;
结果还是存在同样的页面闪烁问题,实在搞不懂哪里出问题了,求各位大佬指点!
备注:内容来源于stack exchange,提问作者Shriyank
相关产品推荐
相关产品推荐

