这是我的场景:
用户访问名为 的路线/protected
。在我的 CanActivate 守卫中,我检查用户是否登录。如果他们没有登录,我想渲染我的404
路线,但仍显示 /protected
在地址栏中。我希望用户无法区分受保护的页面和不存在的页面。
这是我尝试过的,但不起作用。
@Injectable()
export class LoggedInGuard implements CanActivate {
constructor(private router: Router, private userService: UserService) {}
canActivate() {
if (this.userService.getUser()) return true;
this.router.navigate(['/404']);
return false;
}
}
路由后,地址栏中的url会显示/404
,但我希望它显示/protected
。
更改为this.router.navigate(['/404'], { skipLocationChange: true });
也不起作用,因为地址栏中的 url 将是以前的 url,而不是/protected
.
我的问题是:如果用户未登录同时仍将他们试图访问的 url 保留在地址栏中,您如何呈现不同的组件?