RBAC权限模型
基于角色的访问控制
(Role-Based Access Control )
- 特点
先给角色设置权限
再给用户分配角色
最后用户得到这些角色的权限
如果想知道一个用户有什么权限,则要反过来
只设置三张表
- 缺点
租户增加,会有大量的冗余数据
添加或者删除权限不方便
RBAC权限模型(设置五张表)
- 五张表之间的关系
角色与权限: 多对多。(产生一张角色权限中间表)
用户与角色:多对多。(产生一张用户角色中间表) - 数据库的结构
- PD表的结构
角色的本质就是一个集合,里面存放在着权限的名称
给用户指定角色,其实就是将权限打包给用户
案例
查看老王有哪些权限
使用内连接
查询,推荐使用显示内连接,速度快效率高
-- 隐式内连接
select sm.name from pe_user pu,pe_role pr, pe_role_user pru,pe_role_module prm,ss_module sm
where pu.user_id=pru.user_id
and pru.role_id=pr.role_id
and pr.role_id=prm.role_id
and prm.module_id=sm.module_id
and pu.user_name="老王"
-- 显示内连接
select sm.name from pe_user pu inner join pe_role pr inner join pe_role_user pru inner join pe_role_module prm inner join ss_module sm
on pu.user_id=pru.user_id
and pru.role_id=pr.role_id
and pr.role_id=prm.role_id
and prm.module_id=sm.module_id
and pu.user_name="老王"