| 
| 版本3: 
 把增删改查进行合并,统称为授权码,顺序人为定义:增删查改
 
 例如:我的某一个模块的权限是 0010 这是只有查看功能的意思http://bbs.itheima.com/forum.php?mod=attachment&aid=MzUzNDN8ODcxYTM3ZmRhMzk3YmFlZjg5YjAzZmQyODU1NzdkYTV8MTc2MTkyMDYxMQ%3D%3D&request=yes&_f=.png
 
 授权码用十进制表示,用1个字段表达清楚了 4件事
 
 
 1^0=1 1^1=0 0^1=1 0^0=0
 1| 0=1 1| 1=1 0| 1=1 0| 0=0
 1&0=0 1& 1=1 0& 1=0 0&0=0
 
 1)获知权限
 例如:
 模块B1011 是 没有删除这个操作
 现在 我传过来一个授权码码是 1000 我如何判断有没有权限?
 1000&1011=1000
 你再试试 传过来0010授权码:0010&1011=0010
 由上面俩个例子,通过 与运算,得到的是自身,那么说明它有这个增加操作这个权限
 
 传来的二进制和模块的授权码&等于本身,表示有权限滴
 
 2)增加权限
 例如:
 现在 授权码是1001 我要添加一个权限,变成1011,要怎么增加?
 1000 增
 0100 删
 0010 查
 0001 改
 
 1001|0010=1011
 
 3)删除权限
 去掉权限:1011^1000=0011
 
 加权限用或,去掉用异或
 
 优点:
 2进制 节省空间 节省查询时间 而且计算方便
 缺点:
 还是在同一张表
 
 | 
 
3.png
(4.76 KB, 下载次数: 91)
 
 
4.png
(3.19 KB, 下载次数: 105)
 
 |