基于RBAC的权限管理

概念

RBAC即Role Based Access Control,意为基于角色的访问控制。用户与角色相关联,当用户在系统进行注册时可以选择成为某一角色从而拥有这个角色的权限,当然新注册的用户的权限也可以由上一级用户授予如管理员认定某个用户为某个角色就授予了该普通用户对应角色得权限。用户与权限的逻辑分离极大地简化了权限的管理。 图

关于权限资源

权限资源包括:

  • 菜单:对应的是管理系统的菜单、页面、功能等。
  • 目录:也是菜单的一种,只不过没有具体的功能页面,而是一个目录。
  • 按钮:对应的是具体的功能页面上的按钮
  • 接口:对应的是具体的功能页面上的接口

登录用户样例

简单权限时

用户ID用户名用户类型权限标识
1admin1(超级管理员)all
2admin12(普通用户)post:save
post:update
post:remove
post:page
3admin22(普通用户)post:save
post:update
post:remove
post:page

RBAC时

角色ID角色名称角色标识权限标识
1超级管理员super_adminall
2人事部hrpost:save
post:update
post:remove
post:page
3研发部devconfig:save
config:update
config:remove
config:page
用户名用户所属角色权限标识
admin超级管理员all
admin1人事部post:save
post:update
post:remove
post:page
admin2研发部config:save
config:update
config:remove
config:page
admin3人事部、研发部post:save
post:update
post:remove
post:page,config:save
config:update
config:remove
config:page

数据库设计

概念模型设计

概念设计

逻辑模型设计

逻辑模型设计

物理模型设计

物理模型设计

DDL

rbac.sql

接口设计

ApiFox接口文件,导入即可

ApiFox接口文件ApiFox截图

功能截图

权限资源

可通过【系统管理】->【菜单管理】进行管理 菜单资源

也可通过【系统管理】->【前端路由】进行同步 路由同步

权限分配

主要管理角色和菜单的关系,即给角色分配菜单

通过【系统管理】->【角色管理】->【授权菜单】进行管理 授权菜单授权菜单

成员管理

主要管理用户和角色的关系,即给角色分配用户

通过【系统管理】->【角色管理】->【成员管理】进行管理 成员管理成员管理

授权角色

也可单独给用户授权某一个角色

通过【系统管理】->【用户管理】->【授权角色】进行管理 授权角色授权角色

权限控制

后端接口权限控制

详见:权限拦截

关于登录用户权限码获取,可查看auth_service.py下的login方法,里面有权限码perms获取逻辑

前端页面权限控制

对于后端而已,只需要返回该用户的权限码即可,对应的接口为sys/user/permCode,不过前端做了一些兼容处理,即如果/sys/user/info接口中返回有perms权限码信息,就不会再调用sys/user/permCode接口,而是直接使用返回的权限码信息。