角色授权
授权是指确定用户能够做什么的过程。
例如,允许管理用户创建、编辑和删除帖子。非管理员用户仅被授权阅读帖子。
基本的 RBAC 实现
- 步骤1: 安装Zerone 提供的一个简单的权限验证包
yarn add @zeronejs/role-easy
1
- 步骤2: 让我们创建一个Role代表系统中角色的枚举
提示
它在 common/role/enums.ts
export enum Role {
User = 'user',
Admin = 'admin',
}
1
2
3
4
2
3
4
- 步骤3: 将RolesModule导入根模块
import { RolesModule } from '@zeronejs/role-easy';
@Module({
imports: [
RolesModule,
// ... 其他模块
]
})
export class AppModule {}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 步骤4: 在需要权限验证的接口加入 Roles 装饰器
import { Roles } from '@zeronejs/role-easy';
import { Role } from './common/role/enums';
...
@Get()
@Roles(Role.Admin)
getHello(): string {
return this.appService.getHello();
}
...
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
提示
在这个例子中,我们假设request.user包含用户实例和允许的角色(在roles属性下)
为确保此示例有效,您的User类必须如下所示:
class User {
// ...other properties
roles: Role[];
}
1
2
3
4
2
3
4