[SSM+layui]汽车出租系统07_RBAC权限管理及表分析说明怎么设置权限联合主键sql语句分析distinct去重
Posted 平凡加班狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[SSM+layui]汽车出租系统07_RBAC权限管理及表分析说明怎么设置权限联合主键sql语句分析distinct去重相关的知识,希望对你有一定的参考价值。
系列文章目录
RBAC权限管理及表分析说明
什么是RBAC
首先是菜单不一样,还有可能连菜单里面的功能都不一样
这就是为什么要有三张表的原因,分别是菜单表、角色表、权限表
需要我们做这么一个映射表
比如下面我们标记的地方
1号角色拥有1号菜单、
1号角色拥有2号菜单、
1号角色拥有3号菜单、
1号角色拥有4号菜单、
1号角色拥有5号菜单、
…………
这样就就一目了然,很好处理了
他们联合起来的组合也不能重复,要怎么去限制
这就需要涉及到一个知识,叫做:联合主键
什么是联合主键,就是两个字段组合起来的组合不能重复
下面看,我们如果要设置部门经理的权限的映射关系,
要怎么做,其实很简单
这个肯定要关联表的
怎么查?
如果是已知用户id最少要关联这三张表才知道角色id,如果还要知道所有菜单,还需要继续关联表
select * from sys_users,
sys_role_user,
sys_roles
where sys_users.userid=sys_role_user.uid
and sys_role_user.rid=sys_roles.roleid
and sys_users.userid=3
如果还要知道所有菜单,还需要继续关联表
select DISTINCT sys_users.userid,sys_users.realname,
sys_roles.roleid,sys_roles.rolename,
sys_menus.id,sys_menus.title
from
sys_users,
sys_role_user,
sys_roles ,
sys_role_menu,
sys_menus
where sys_users.userid=sys_role_user.uid
and sys_role_user.rid=sys_roles.roleid
and sys_role_menu.mid=sys_menus.id
and sys_users.userid=3
这样就全部查出来了
但是这里是已知角色id那就不一样了
需要关联角色表吗
注意,我们已经知道角色id了,关联角色表还有意义吗,没有意义,所以这里不需要关联角色表
(意思就是三张表关联就行了,不需要五张表关联)
select * from
sys_roles,
sys_role_menu,
sys_menus
where sys_roles.roleid=sys_role_menu.rid
and sys_role_menu.mid=sys_menus.id
and sys_roles.roleid=1
但是如果只是知道角色名称就不一样了,这个后面再研究
很简单,这样设计就好了
如果要给张三分配两个角色,一个保安、一个部门经理,这个怎么实现
答案如下
关于权限管理必备的sql知识
思考这两个问题
怎么写?
sql梳理清楚之后下一步做什么
一定要先做菜单的增删改查,我们下一篇文章来具体实现
总结
做权限管理,先梳理好sql,以及表结构
先有思路再写代码
以上是关于[SSM+layui]汽车出租系统07_RBAC权限管理及表分析说明怎么设置权限联合主键sql语句分析distinct去重的主要内容,如果未能解决你的问题,请参考以下文章
[SSM+layui]汽车出租系统011_菜单管理-修改头文件报错
[SSM+layui]汽车出租系统03_项目环境搭建(添加外部的servlet-api.jar)
[SSM+layui]汽车出租系统011_菜单管理-删除有子节点就不能删改了xml要重启服务删除菜单的时候关联关系也要删除通过模型驱动获取值
[SSM+layui]汽车出租系统013_角色(Role)管理CRUD(增删改查)批量删除的实现角色关联菜单搜索和替换操作要勾上区分大小写,否则会出问题
[SSM+layui]汽车出租系统06_加载左侧菜单(角色里面 type为1的就是超级管理员(这里)简单json如何转变成标准json)List和ArrayList的区别项目中空指针错误怎么解决(代码