SpringBoot整合SpringSecurity实现权限控制(⼆):权限数据基本模型设计系列⽂章⽬录 本⽂⽬录
前⾔
在上篇⽂章中我们仅仅使⽤了静态权限数据进⾏了模拟测试。实际正常情况的流程是:
挤压比
1. 由管理员给⽤户分配权限,权限数据写到数据库中。
2. 后台服务在进⾏⽤户认证时从数据库读取⽤户的权限数据(动态数据)。led球泡灯罩
本⽂将通过RBAC( Role-Based Access Control:基于⾓⾊的访问控制策略)进⾏权限模型设计
在线管理系统
⼀、RBAC是什么?
通过⽤户关联⾓⾊,⾓⾊关联功能(资源)的⽅式,使得⽤户间接持有了功能(资源)。 ⽰例
登船梯
⼆、数据模型
根据以上RBAC的理解,我们⼀般会对数据模型这样设计:
1. ⽤户表:存储⽤户信息,⽐如:张三、李四
2. ⾓⾊表:存储⾓⾊信息,⽐如:系统管理员,普通⽤户
3. ⽤户⾓⾊表:存储⽤户与⾓⾊的对应关系,⼀个⽤户可以拥有多个⾓⾊
4. 功能(资源)表:存储系统功能资源(⼀般为某个菜单或菜单下的某些操作),⽐如⽤户管理菜单,⽤户的新增、修改、删除等 5. 权限表:存储⾓⾊与系统功能资源的对应关系,⼀个⾓⾊可以拥有多个功能。
巧克力工艺品
ER图
三、数据模型的测试
建⽴了以上的模型,我们可以通过⼀段简单的SQL语句来查询某个⽤户所拥有的权限:
SELECT
漏缝板生产线*
FROM
sys_menu
WHERE
id IN(SELECT menu_id FROM sys_permission WHERE role_id IN(SELECT role_id FROM sys_user_role WHERE user_id =15))