You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
abp/docs/zh-Hans/UI/Angular/Permission-Management.md

1.9 KiB

权限管理

权限是为特定用户,角色或客户端授予或禁止的简单策略. 你可以在ABP授权文档中阅读更多信息.

您可以使用 ConfigStategetGrantedPolicy 选择器获取经过身份验证的用户的权限.

你可以从Store中获取权限的布尔值:

import { Store } from '@ngxs/store';
import { ConfigState } from '../states';

export class YourComponent {
  constructor(private store: Store) {}

  ngOnInit(): void {
    const canCreate = this.store.selectSnapshot(ConfigState.getGrantedPolicy('AbpIdentity.Roles.Create'));
  }

  // ...
}

或者你可以通过 ConfigStateService 获取它:

import { ConfigStateService } from '../services/config-state.service';

export class YourComponent {
  constructor(private configStateService: ConfigStateService) {}

  ngOnInit(): void {
    const canCreate = this.configStateService.getGrantedPolicy('AbpIdentity.Roles.Create');
  }

  // ...
}

权限指令

你可以使用 PermissionDirective 来根据用户的权限控制DOM元素是否可见.

<div *abpPermission="AbpIdentity.Roles">
  仅当用户具有`AbpIdentity.Roles`权限时,此内容才可见.
</div>

如上所示,你可以使用 abpPermission 结构指令从DOM中删除元素.

该指令也可以用作属性指令,但是我们建议你将其用作结构指令.

权限守卫

如果你想要在导航过程中控制经过身份验证的用户对路由的访问权限,可以使用 PermissionGuard.

requiredPolicy 添加到路由模块中的 routes属性.

const routes: Routes = [
  {
    path: 'path',
    component: YourComponent,
    canActivate: [PermissionGuard],
    data: {
      routes: {
        requiredPolicy: 'AbpIdentity.Roles.Create',
      },
    },
  },
];

授予的策略存储在 ConfigStateauth 属性中.

下一步是什么?