我已经有一个 AuthService 在登录时对用户进行身份验证,并且 AuthGuard 在未登录的情况下阻止访问。
某些页面我通过 UserProfile/Role 限制访问,但现在我需要阻止页面上的操作。
我有像“管理员、经理、支持和代理”这样的角色,从大到小。
如何将级别仅设置为经理或以上以编辑所有人都可以访问的页面上的内容(支持和代理仅限查看)?
这是我当前的 canActivate 方法:
canActivate(route: ActivatedRouteSnapshot) {
const currentUser = JSON.parse(localStorage.getItem('currentUser'));
if (currentUser) {
// check if route is restricted by role
if (route.data.roles && route.data.roles.indexOf(currentUser.role) === -1) {
// role not authorised so redirect to home page
this.router.navigate(['/']);
return false;
}
// authorised so return true
return true;
}
// not logged in so redirect to login page
this.router.navigate(['auth/login']);
return false;
}
这是我的模块 routing.module.ts
const routes: Routes = [{
path: '',
component: ReportsComponent,
canActivateChild: [AuthGuard],
children: [
{
path: 'blocked-users',
component: BlockedUsersComponent,
data: { roles: [Role.admin, Role.manager, Role.suporte, Role.agent] },
children: [
{ ...
需要修复这两个主题:
data: { roles: [] }
1)我只想通过较低级别的线路(如代理);
2)内部组件告诉只有经理可以编辑数据(disable
如果角色==支持或代理,则只有一个按钮)