参考:https://www.cnblogs.com/hao-1234-1234/p/8976582.html
1. RBAC是什么
RBAC:Role-Based Access Control(基于角色的访问控制)
简单地说,就是不要直接把权限放在用户表上,而是把角色和用户关联起来,再把角色和权限关联起来。
2. 利用RBAC设计表
2.1 题目
一个简单的管理系统,有三种角色,管理员可以做任何事,操作员只可以上架,会计只可以收费。每个账户可同时具有若干种角色,只要当前账户有一个角色允许有此权限即可执行此操作。设计数据库表,实现此需求。
2.2 我的设计
2.2.1 权限表 authority
- authority_id
- authority_name
2.2.2 角色表 role
- role_id
- role_name
2.2.3 人员表 user
- user-id
- user_name
- ...
2.2.4 权限角色映射表 authority_role_group
- id
- authority_id
- role_id
2.2.5 人员角色映射表 user_role_group
- id
- user_id
- role_id
2.3 数据举例
2.3.1 权限表
authority_id | authority_name |
---|
1 | 上架 |
2 | 收费 |
3 | 打折 |
2.3.2 角色表
role_id | role_name |
---|
1 | 管理员 |
2 | 操作员 |
3 | 会计 |
2.3.3 人员表
user_id | user_name |
---|
1 | 张三 |
2 | 李四 |
3 | 王五 |
2.3.4 权限角色映射表
id | authority_id | role_id |
---|
1 | 1(上架) | 1(管理员) |
2 | 1(上架) | 2(操作员) |
3 | 2(收费) | 1(管理员) |
4 | 2(收费) | 3(会计) |
5 | 3(打折) | 1(管理员) |
2.3.5 人员角色映射表
id | user_id | role_id |
---|
1 | 1(张三) | 1(管理员) |
2 | 2(李四) | 2(操作员) |
3 | 2(王五) | 3(会计) |