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']) ;
也有同样的问题。
return router.parseUrl('/home/login');
而不是
router.navigate(['/home', 'login']);
。
关键区别在于,
parseUrl
返回一个告诉Angular,它应该在呈现页面之前重定向,这应该希望防止任何闪烁发生并提高SSR兼容性。
当服务器上的后卫返回时,
UrlTree
。
false