开始使用

ACL 全称叫访问控制列表(Access Control List),是一种非常简单的基于角色权限控制方式。一个完全独立 @delon/acl 模块(DEMO)。

如何运行

内部实际是一个 ACLService 它提供一套基于角色权限服务类。为了更好的编码体验 ng-alain 有多处组件或模块也依赖于它,例如:stMenuService 等,并且这些会以 acl 属性的形式表现。因此,当遇到 acl 属性都表示 can 方法的参数值

如何使用

安装 @delon/acl 依赖包:

yarn add @delon/acl

导入 DelonACLModule 模块:

import { DelonACLModule } from '@delon/acl';

@NgModule({
  imports: [
    DelonACLModule.forRoot()
  ]
})
export class AppModule { }

API

参数

参数说明类型默认值全局配置
[guard_url]string路由守卫失败后跳转/403
[preCan](roleOrAbility: ACLCanType) => ACLTypecan 执行前回调-

可以通过全局配置覆盖它们。

ACLService

方法说明
[change]监听ACL变更通知
[data]获取所有ACL数据
setFull(val: boolean)标识当前用户为全量,即不受限
set(value: ACLType)设置当前用户角色或权限能力(会先清除所有)
setRole(roles: string[])设置当前用户角色(会先清除所有)
setAbility(abilities: (number | string)[])设置当前用户权限能力(会先清除所有)
add(value: ACLType)为当前用户增加角色或权限能力
attachRole(roles: string[])为当前用户附加角色
attachAbility(abilities: (number | string)[])为当前用户附加权限
removeRole(roles: string[])为当前用户移除角色
removeAbility(abilities: (number | string)[])为当前用户移除权限
can(roleOrAbility: ACLCanType)当前用户是否有对应角色
canAbility(ability: ACLCanType)当前用户是否有对应权限点

ACLCanType

type ACLCanType = number | number[] | string | string[] | ACLType

ACLType

属性类型说明默认
[role]string[]角色-
[ability]number[], string[]权限点-
[mode]allOf, oneOfallOf 表示必须满足所有角色或权限点数组算有效
oneOf 表示只须满足角色或权限点数组中的一项算有效
oneOf
[except]boolean是否取反,即结果为 true 时表示未授权false