版本2:
0 无权限
1 有权限
张三对商品模块0010只能查看一个权限,不能进行增删改,而李四对商品模块是1111,具有增删改查的操作。
在页面上,通过选择 或手写 等操作 找到了 这个张三用户,对每一个模块,有4个选项,不选 默认为0 选择了 就是1,对这个客户的每个模块,四个功能进行勾选,我选中后提交 到后台 修改字段 0->1,张三所看到的页面就会多出刚选中的权限对应的操作功能。
对于这个模块 是否允许你的操作 最简单的控制办法就是 菜单按钮 显不显示
优点:
1、可以有多个权限身份;
2、已经开始控制每一个用户的每一个模块的权限了,能对具体模块进行增删改查操作权限的制定。
缺点:
1、还是同一张用户表里,数据量大,每次访问消耗资源,浪费时间;
2、若是增加操作,那么在找到用户之后 我还要去找2个字段,一个是模块 一个是 增加,操作不方便。
一个模块至少有16种权限的可能性,增删查改的可能性2*2*2*2=16种
把增删改查进行合并,统称为授权码,顺序人为定义:增删查改
例如:我的某一个模块的权限是 0010 这是只有查看功能的意思
授权码用十进制表示,用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进制 节省空间 节省查询时间 而且计算方便
缺点:
还是在同一张表