用户-角色-权限
来源:互联网 发布:快压压缩软件 编辑:程序博客网 时间:2024/06/06 00:00
最近因为要用到权限这个东西,感觉脑袋很是有点乱,昨天硬是搞到大半夜才终于理清了思路。
现在我就将我的思路和大家分享一下,不敢保证完全正确,大家看看便罢。看看便罢
一般我们使用到 用户-角色-权限 这三张表的时候,会发现表里会有很多字段,然后相对应的外键也是很多,往往我们就容易混乱。现在我这边列举的三张表就是最简单的三张表,仅仅是用户-角色-权限三者的关系。
==================
先举个例子:
用户1:老王 ——- 经理
角色:超级管理员
权限:什么权限都有1.。。。;2,。。。3.。。。。好多好多
用户2:小王 ——- 销售主管
角色:普通管理员A
权限:1、管理销售部门人员的流失;2、管理销售部门人员的业绩 ;3、管理销售部门新人的培训
用户3:老李 ——- 很厉害的存在
角色:普通管理员A,管理员AAA
权限:1、管理销售部门人员的流失;2、管理销售部门人员的业绩 ;3、管理销售部门新人的培训;4、——-;5、——-;6、——-。
OK,我们分析一下,很明显权限是相对于角色来说,角色是相对于用户来说。如果用户直接对应权限的话,那么权限肯定得不到细化,以及维护都会使得耦合度增加,而且角色的存在也会方便我们的操作。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
中间表:
试想一下,我们10个用户分别对应10角色的话,要是没有中间表的存在,我们该怎么建立相对应的关系?
我们中间表就两个字段,两个外键分别对应两个表主键
user_role :userid,roleid
role_function:roleid , funcid
==================
下面的将是基于 权限是相对于角色来说,角色是相对于用户 的基础来讲
用户——角色 (ManyToMany)
首先用户角色最少会有三张表关系。用户表(user)、角色表(role)、中间表(user_role)
我们最终目的是查询出该用户所拥有的权限,而权限依赖角色,那么我们就先要查询出该用户所处的角色
r.id from role r inner join user_role ur onr.id=ur.roleid inner join user u on u.id=ur.userid where u.id=5
这样我们就通过中间表查询出该用户所处的角色的id (r.id=5,6,7)
角色——权限(ManyToMany)
角色表(role)、权限表(function)、中间表(role_function)
上面我们已经将用户所处的角色的id已经查询出来,那么我们就可以通过角色的id查询出该用户的权限了
from function f inner join role_function uf on f.id=uf.FUNCID inner join role r on r.id=uf.roleid where r.id in(‘5’,’6’,’7’)
现在该用户所处的权限就已经查询出来
慢慢想一下,其实就这么简单,难得可比这复杂不知道多少倍。
有不足之处还请大家多多指正,谢谢!
- 关于用户角色权限
- 用户角色权限设计
- 创建角色,用户,权限
- 创建角色,用户,权限
- 角色权限用户
- 用户、权限、角色
- 建角色,用户,权限
- 用户角色权限设计
- 创建角色、用户、权限
- 用户角色权限设计
- 创建角色,用户,权限
- Oracle 用户、角色、权限
- 用户、角色、权限
- 用户,权限,角色
- 用户角色权限设计
- 用户 权限 角色
- 用户--角色--权限
- 用户,角色权限详解
- C语言(字母大小写的转换)
- 小白做今日头条常见问题汇总
- django bug, No module named MySQLdb
- cocos2d-x 、锚点与坐标系详解
- Python3学习(33)--序列和反序列化(二)
- 用户-角色-权限
- 学习笔记之面向对象编程21(数据流、Print流)
- hmset 与hdel 一次操作多个 fields
- js 中document.referrer
- 8大排序算法详解
- Spring中@Transactional用法深度分析之一
- maven groupId
- 个人见解:为什么说橘猫胖?
- malloc、calloc、realloc的区别