RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。
在系统访问中,最终判断的是当前用户拥有哪些权限,以使用相关的权限进行业务处理。
在RBAC中,共有用户、部门、权限、角色四个概念,部门是用户的集合,角色是权限的集合;用户可以拥有不同的权限和角色,部门也可以拥有不同的权限和角色;权限拥有上下级关系,并且在系统中可以有业务权限与数据权限两类;部门拥有上下级关系,此设计方式没有对权限进行继承;部门和用户是一对多的关系,一个部门中可以有多个用户,一个用户只允许属于一个部门。
数据表结构如下:
1.用户表
表名:t_user | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
user_id | varchar(32) | 主键 | 必填 | 主键 |
login_name | varchar(255) |
| 必填 | 登录用户名 |
login_pass | varchar(255) |
| 必填 | 密码 |
org_id | varchar(32) | 外键 | 必填 | 所属机构ID |
user_name | varchar(255) |
| 必填 | 真实姓名 |
user_phone | varchar(255) |
|
| 电话号码 |
user_email | varchar(255) |
|
| |
create_date | varchar(10) |
| 必填 | 创建日期 |
create_time | varchar(8) |
| 必填 | 创建时间 |
create_user | varchar(32) | 外键 | 必填 | 创建人 |
2.机构表
表名:t_organization | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
org_id | varchar(32) | 主键 | 必填 | 主键 |
org_name | varchar(255) |
| 必填 | 机构名称 |
org_code | varchar(255) |
|
| 机构编码 |
org_header | varchar(255) |
|
| 机构负责人 |
parent_id | varchar(32) | 表内外键 | 必填 | 上级机构ID,根机构的ID为空 |
create_date | varchar(10) |
| 必填 | 创建日期 |
create_time | varchar(8) |
| 必填 | 创建时间 |
create_user | varchar(32) | 外键 | 必填 | 创建人 |
3.权限表
表名:t_right | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
right_id | varchar(32) | 主键 | 必填 | 主键 |
right_name | varchar(255) |
| 必填 | 权限名称 |
right_code | varchar(255) |
|
| 权限编码 |
parent_id | varchar(32) | 表内外键 | 必填 | 父权限ID, 根权限的ID为空 |
create_date | varchar(10) |
| 必填 | 创建日期 |
create_time | varchar(8) |
| 必填 | 创建时间 |
create_user | varchar(32) | 外键 | 必填 | 创建人 |
4.用户权限关系表
表名:t_user_right | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
ur_id | varchar(32) | 主键 | 必填 | 主键 |
user_id | varchar(32) | 外键 | 必填 | 用户ID |
right_id | varchar(32) | 外键 | 必填 | 权限ID |
5.机构权限关系表
表名:t_org_rigth | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
or_id | varchar(32) | 主键 | 必填 | 主键 |
org_id | varchar(32) | 外键 | 必填 | 机构ID |
right_id | varchar(32) | 外键 | 必填 | 权限ID |
6.角色表
表名:t_role | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
role_id | varchar(32) | 主键 | 必填 | 主键 |
role_name | varchar(255) |
| 必填 | 角色名称 |
create_date | varchar(10) |
| 必填 | 创建日期 |
create_time | varchar(8) |
| 必填 | 创建时间 |
create_user | varchar(32) | 外键 | 必填 | 创建人 |
7.用户角色关系表
表名:t_user_role | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
ur_id | varchar(32) | 主键 | 必填 | 主键 |
user_id | varchar(32) | 外键 | 必填 | 用户ID |
role_id | varchar(32) | 外键 | 必填 | 角色ID |
8.机构角色关系表
表名:t_org_role | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
or_id | varchar(32) | 主键 | 必填 | 主键 |
org_id | varchar(32) | 外键 | 必填 | 机构ID |
role_id | varchar(32) | 外键 | 必填 | 角色ID |
9.角色权限关系表
表名:t_role_right | ||||
字段名称 | 字段类型 | 主外键 | 是否必填 | 备注 |
rr_id | varchar(32) | 主键 | 必填 | 主键 |
role_id | varchar(32) | 外键 | 必填 | 角色ID |
right_id | varchar(32) | 外键 | 必填 | 权限ID |