星空网 > 软件开发 > ASP.net

巧妙运用二进制验证权限

来源: http://zxlovenet.cnblogs.com 

在权限分配中有多个权限级别,不同用户分别有多个不同的权限。

论坛的权限:

查看、发帖、投票、搜索

用户的权限:

用户A:查看、发帖

用户B:查看

用户C:查看、发帖、投票、搜索

分析:

有四种不同的权限级别,总共2^4种权限分配方式。

 

像这样权限等级划分和不同级别用户的权限分配采用二进制方式权限分配验证方式是最好的选择。即每一个操作权限都用一个二进制数表示(1、10、100、1000)。总共的权限种类有2^n种,n即代表权限类别。在C#中long类型有64位,所以总共有64类权限,2^64种权限分配方式。权限的分配、删除、查看都采用二进制运算实现。

 巧妙运用二进制验证权限

long userrolevalue;//用户的操作权限

long oprolevalue;//一个操作的权限

 

1.权限的分配(或运算)

userrolevalue = userrolevalue | oprolevalue

 巧妙运用二进制验证权限

(00001110)2=(00000010)2|(00000100)2|(00001000)2

 

2、权限的删除(求补、与运算)
userrolevalue = userrolevalue & (~oprolevalue)

 巧妙运用二进制验证权限

 

3、权限的验证(与运算)

(userrolevalue & oprolevalue) == oprolevalue

(00000101)2 &( 00000011)2 ==(00000001)2

如果通过验证则具有相应类别的权限。

 

此验证方法,还可以用在菜单权限的验证上来。根据要划分的权限等级数量可以选择相应的数据类型,比如int类型默认的是32位的,short是16位的。

 

附:逻辑(布尔型)运算符用于对bool型的结果的表达式进行运算,运算的结果都是bool型。其运算结果如下所示:

 

运算符 运算 例子 结果
&AND(与)false&trueFALSE
|OR(或)false|trueTRUE
^XOR(异或)false^trueTRUE
!NOT(非)!falseTRUE
&&AND(短路)false&&trueFALSE
||OR(短路)false||trueTRUE




原标题:巧妙运用二进制验证权限

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

fba网址:https://www.goluckyvip.com/tag/20102.html
fba危险品审查:https://www.goluckyvip.com/tag/20103.html
fba尾程:https://www.goluckyvip.com/tag/20104.html
fba尾程费用:https://www.goluckyvip.com/tag/20105.html
fba尾程收费:https://www.goluckyvip.com/tag/20106.html
fba文件是什么:https://www.goluckyvip.com/tag/20107.html
春季热卖单品!空气净化器单周销售额近三十万!:https://www.kjdsnews.com/a/1836547.html
春季热卖单品!空气净化器单周销售额近三十万!:https://www.goluckyvip.com/news/188215.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流