我有一个带有 canActivate 保护的延迟加载模块,在加载延迟加载模块后,页面以某种方式未经身份验证(例如通过在同一浏览器的不同选项卡中以不同角色登录),所以当我们尝试访问之前延迟加载的模块的组件,它们可以在以前加载的选项卡上成功访问。谁能解释为什么会发生这种情况或任何其他方式来处理这种情况?
注意:我根据用户角色加载了多个延迟加载的模块,延迟加载的模块可能具有相同的一个或多个子组件
代码:
主路由.module.ts
{
path: 'admin',
loadChildren: 'app/featureModules/admin/admin.module#AdminModule',
canActivate: [ AdminGuardService]
},{
path: 'staff',
loadChildren: 'app/featureModules/staff/staff.module#StaffModule',
canActivate: [ StaffGuardService]
}
在人员-routing.ts
{
path: '',
loadChildren: 'app/featureModules/property-details-view/property-details-view.module#PropertyDetailsViewModule'
}
在 admin-routing.ts
{
path: '',
loadChildren: 'app/featureModules/property-details-view/property-details-view.module#PropertyDetailsViewModule'
}
StaffGuardService 和 AdminGuardService 验证用户的角色并允许访问相应的路由。