MIS系统权限控制的一个简便方法

MIS系统权限控制的一个简便方法

MIS系统权限控制的一个简便方法收藏 新一篇: 创MIS系统的权限又多又复杂,很多人是在用户数据表中设置多个字段,每个字段代表一个权限,或者设置一个字符串,不同的字符组合表示用户的不同权限。简单一点的,可以预先设置几个角色,根据角色来行使预设权限,但又不够灵活。现介绍一个简单灵活的权限分配控制的方法,并无高深见解,只是很多人忽略了它。如果您正在设计权限控制模式,不妨接着往下看。

此方法非常简洁,扩充性很好。

仅用一个 integer 字段即可保存全部权限组合。

另外每个权限用一个整型表示
如:商品查看权限用 1 ;
商品更改权限用 2 ;
商品完全浏览权限用 4 ;
订单查看权限用 8 ;
订单更改权限用 16 ;更多权限…… 32,64,128 ……

给用户分配权限时,只需把用户获得的权限值累加就可以了。
应用时使用“与”操作来识别哪个用户是否拥有相应的权限。


例子
if 用户的权限总值 and 当前操作所需的权限 = 当前操作所需的权限 then
showmessage('有权限')
else
   showmessage('无权限');

运用此法,可简单的设计出复杂的权限系统。

这篇文章实为一抛砖引玉之作,如您有更好的权限控制系统设计思路,欢迎来信讨论: ufo2003@126.com

#aedvoan 发表于2005-11-13 15:24:00   IP: 220.191.126.*
能稍稍解释下这是为什么吗?
#小网虫 发表于2005-11-18 18:13:00   IP: 218.72.153.*
道理很简单啊,and 是以二进制按位“与”操作的。其真值表是:
1 and 1 = 1
1 and 0 = 0
0 and 1 = 0
0 and 0 = 0
比如十进位值 9的二进制是:01001
8的二进制是:01000
9 and 8的二进制结果是 01000= 8
9 and 4的结果是 00000= 0
所以,就表示8包含在9的组合方式内(8+1=9),而4不包含在内。
#dbj 发表于2006-05-27 13:40:00   IP: 221.221.218.*
高明
#touchboy 发表于2006-11-07 12:25:00   IP: 124.29.31.*
我也是从速达那学到这一招,已经在很多项目中运用  

原文地址:https://www.cnblogs.com/hnxxcxg/p/2940767.html