我创建了一个防护程序,以进行身份验证,并使用canActivate
激活了该防护程序。但是,当我转到将要进行身份验证的路由时,很快,我将重定向到根URL,然后将其转到所需的URL。
我不想让用户看不到预期的页面,所以我的问题是,有没有办法防止它转到该根URL?
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
this.router.navigate(['/painel/login']);
return true;
}
答案 0 :(得分:0)
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
this.router.navigate(['/painel/login']);
return true;
}
您的警卫实施不正确。它必须
在第二种情况下,由于您还希望显示登录页面(而不仅仅是阻止受保护的路由被激活),因此您可以导航到登录路由。
但是您的警卫总是告诉路由器允许用户进入受保护的路由(因此,路由器允许导航),并且还告诉其导航至登录页面(因此,它转到登录页面)。
所以你的守卫应该看起来像
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (!this.isAuthenticated()) {
this.router.navigate(['/painel/login']);
return false;
}
return true;
}