守卫闪烁页面然后加载实际页面

问题描述 投票:0回答:2
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;
    
};

角首先加载回家/登录,然后立即加载实际路线。我正在使用角SSR。 注意:令牌和用户两个变量都有值,如果在控制台中,我不会从中获取任何日志。

return router.createUrlTree(['/home', 'login']) ;
也有同样的问题。
    

javascript angular typescript angular-guards
2个回答
0
投票
return router.parseUrl('/home/login');

而不是

router.navigate(['/home', 'login']);
关键区别在于,
parseUrl

返回一个告诉Angular,它应该在呈现页面之前重定向,这应该希望防止任何闪烁发生并提高SSR兼容性。

当服务器上的后卫返回时,
UrlTree

false

0
投票

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.