问题描述
我有一个应用程序,其中有两个防护(MsalGuard-用于身份验证,AuthGuard-编写自己的代码以授权用户是否可以访问该特定页面)。在加载模块时使用延迟加载。请找到以下代码
app-routing.module.ts
{
path: 'administration',loadChildren: () => import('./administration/administration.module').then(m =>
m.AdministrationModule),// loadChildren: './administration/administration.module#AdministrationModule',canActivate: [MsalGuard],},administration-routing.module.ts
path: '',//canActivate: [AuthGuard],component: AdministrationComponent,children: [
{
path: 'user-admin/user-list',children: [
{ path: '',component: UserListComponent,canActivate: [AuthGuard] },{ path: 'user-creation',component: UserCreationComponent,]
},auth.guard.ts
canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot) {
const currentUser = this.authenticationService.currentUserValue;
if (currentUser) {
return this.hasAdminAccess(state,currentUser);
}
this.router.navigate(['/login'],{ queryParams: { returnUrl: state.url } });
return false;
}
这是主要问题,如果我们登录一次并能够进行相应的授权,它就会按预期工作。.但是,如果我清除了总缓存并直接打开其中一个组件页面,则它会询问MsalAuth并提供详细信息,到那时,AuthGuard可能已执行,用户详细信息为空,并且未经授权就打开了页面。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)