当我登录到仪表板并刷新重定向到“登录”页面的页面时,因为我添加了路由器防护。我想避免在该仪表板页面内进行重定向。有什么办法吗?
这是我的路由器防护的结构
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.authService.isLoggedIn.pipe(
take(1),
map((isLoggedIn: boolean) => {
if (!isLoggedIn) {
this.router.navigate(['/userlogin']);
return false;
}
return true;
})
);
}
我的路由如下所示。
const routes: Routes = [
{ path: '' , component : AdminComponent,
canActivate: [AuthGuard],
}
{path: 'userlogin' , component: UserloginComponent},
{ path: 'admin' ,
component : AdminComponent,
canActivate: [AuthGuard],
}]
答案 0 :(得分:0)
登录时,需要将用户令牌保存到localStorage并将此信息保存到您的后卫,因此对后端的每次调用都从localStorage发送jwt令牌。 发生的情况是,如果您不告诉您的警卫您已登录,则它们的isLoggedIn将为false并将重定向您。 将其放入您的警卫构造函数中:
this.localStorage.observe('session')
.subscribe(loggedIn => Object.assign(this._loggedIn, loggedIn || {}));
登录时请输入以下内容:
this.localStorage.store('session', this._loggedIn);
localStorage
是LocalStorageService
(ngx-webstorage)的私有变量,您可以使用任何想要的内容。