基于角色的访问控制方案设计

691 阅读2分钟

RBAC介绍

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

参考方案

模型参考

图片.png

名称说明
角色比如普通用户、管理员等角色
功能比如新增用户、修改用户、删除用户等功能
权限通过权限可以减少功能直接分配资源的配置冗余
资源表示可以访问的资源
菜单模板可以定义多套菜单模板,每套模板展示的菜单不同
菜单只在编辑菜单模板和角色分配功能时才会显示菜单下关联的功能

表结构参考

角色表 sec_role

字段类型说明
idbigint
role_codevarchar角色代码
role_namevarchar角色名称
enable_flagtinyint启用标志
remarkvarchar备注
tenant_idbigint租户ID

功能表 sec_function

字段类型说明
idbigint
function_codevarchar功能代码
function_namevarchar功能名称

权限表 sec_permission

字段类型说明
idbigint
permission_codevarchar权限代码
permission_namevarchar权限名称

资源表 sec_resource

字段类型说明
id
resource_typevarcahr资源类型,比如API、PAGE等
access_policyvarchar访问策略
access_methodvarchar访问方式,比如GET、POST、PUT等
resource_pathvarchar资源路径
fronzen_flagtinyint冻结标志
remarkvarchar备注

备注:访问策略access_policy取值:

  • 匿名ANONYMOUS表示所有人都能访问该资源;
  • 已认证AUTHENTICATED表示已登录的人可以访问该资源;
  • 已授权GRANTED表示被授予该资源的访问权限的人才能访问该资源。

角色功能关联表 sec_role_function_rel

字段类型说明
idbigint
role_idbigint角色ID
function_idbigint功能ID
tenant_idbigint租户ID

功能权限关联表 sec_function_permission_rel

字段类型说明
idbigint
function_idbigint功能ID
permission_idbigint权限ID

权限资源关联表 sec_permission_resource_rel

字段类型说明
idbigint
permission_idbigint权限ID
resource_idbigint资源ID

功能资源关联表 sec_function_resource_rel

字段类型说明
idbigint
function_idbigint功能ID
resource_idbigint资源ID

菜单模板表 sec_menu_template

字段类型说明
idbigint
template_codevarchar模板代码
template_namevarchar模板名称
tenant_idbigint租户ID

菜单表 sec_menu

字段类型说明
idbigint
template_idbigint模板ID
parent_idbigint父菜单ID
menu_codevarchar菜单代码
menu_namevarchar菜单名称
menu_orderint菜单序号
link_resource_idbigint链接资源ID
tenent_idbigint租户ID

菜单功能关联表 sec_menu_function_rel

字段类型说明
idbigint
menu_idbigint菜单ID
function_idbigint功能ID
tenant_idbigint租户ID