在我的应用程序中,您可以在应用程序各处找到许多routerLink。根据用户的角色,某些用户可能无法访问其中的一些。我的auth-guard-service处理这种情况。
但是在这种情况下会发生的情况是,用户被导航到禁止页面,然后又回到旧页面。
我想要的不是完全不导航,而是在当前站点上显示模式或祝酒消息(无论如何)。
这怎么办? 这是我的一些代码:
export class AuthGuardService implements CanActivate {
constructor(public auth: AuthServiceProvider, public router: Router, private TokenHelper: TokenHelperService) {}
canActivate(Route: ActivatedRouteSnapshot): Observable<boolean> {
const expectedRoles = Route.data['authenticate'] as string[];
// ...... and so on (return true or false)
答案 0 :(得分:4)
如果禁用页面用户试图激活的页面位于延迟加载的模块中,则可以通过放置canLoad保护器来阻止导航。
{
path: 'admin',
loadChildren: () => import('./admin/admin.module').then(mod => mod.AdminModule),
canLoad: [AuthGuard]
},
=====
canLoad(route: Route): boolean {
return this.checkValidation();
}
checkValidation() {
if (authService.checkRights()) { return true}
else {
this.toastService.showToast('Forbiden');
return false
}
}
}