RBAC介绍
RBAC是基于角色的访问控制,下面提供众多实现方案中的一个参考。
参考方案
模型参考

| 名称 | 说明 |
|---|
| 角色 | 比如普通用户、管理员等角色 |
| 功能 | 比如新增用户、修改用户、删除用户等功能 |
| 权限 | 通过权限可以减少功能直接分配资源的配置冗余 |
| 资源 | 表示可以访问的资源 |
| 菜单模板 | 可以定义多套菜单模板,每套模板展示的菜单不同 |
| 菜单 | 只在编辑菜单模板和角色分配功能时才会显示菜单下关联的功能 |
表结构参考
角色表 sec_role
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| role_code | varchar | 角色代码 |
| role_name | varchar | 角色名称 |
| enable_flag | tinyint | 启用标志 |
| remark | varchar | 备注 |
| tenant_id | bigint | 租户ID |
功能表 sec_function
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| function_code | varchar | 功能代码 |
| function_name | varchar | 功能名称 |
权限表 sec_permission
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| permission_code | varchar | 权限代码 |
| permission_name | varchar | 权限名称 |
资源表 sec_resource
| 字段 | 类型 | 说明 |
|---|
| id | | |
| resource_type | varcahr | 资源类型,比如API、PAGE等 |
| access_policy | varchar | 访问策略 |
| access_method | varchar | 访问方式,比如GET、POST、PUT等 |
| resource_path | varchar | 资源路径 |
| fronzen_flag | tinyint | 冻结标志 |
| remark | varchar | 备注 |
备注:访问策略access_policy取值:
- 匿名ANONYMOUS表示所有人都能访问该资源;
- 已认证AUTHENTICATED表示已登录的人可以访问该资源;
- 已授权GRANTED表示被授予该资源的访问权限的人才能访问该资源。
角色功能关联表 sec_role_function_rel
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| role_id | bigint | 角色ID |
| function_id | bigint | 功能ID |
| tenant_id | bigint | 租户ID |
功能权限关联表 sec_function_permission_rel
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| function_id | bigint | 功能ID |
| permission_id | bigint | 权限ID |
权限资源关联表 sec_permission_resource_rel
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| permission_id | bigint | 权限ID |
| resource_id | bigint | 资源ID |
功能资源关联表 sec_function_resource_rel
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| function_id | bigint | 功能ID |
| resource_id | bigint | 资源ID |
菜单模板表 sec_menu_template
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| template_code | varchar | 模板代码 |
| template_name | varchar | 模板名称 |
| tenant_id | bigint | 租户ID |
菜单表 sec_menu
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| template_id | bigint | 模板ID |
| parent_id | bigint | 父菜单ID |
| menu_code | varchar | 菜单代码 |
| menu_name | varchar | 菜单名称 |
| menu_order | int | 菜单序号 |
| link_resource_id | bigint | 链接资源ID |
| tenent_id | bigint | 租户ID |
菜单功能关联表 sec_menu_function_rel
| 字段 | 类型 | 说明 |
|---|
| id | bigint | |
| menu_id | bigint | 菜单ID |
| function_id | bigint | 功能ID |
| tenant_id | bigint | 租户ID |