博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
巧妙运用二进制验证权限
阅读量:6507 次
发布时间:2019-06-24

本文共 912 字,大约阅读时间需要 3 分钟。

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

论坛的权限:

查看、发帖、投票、搜索

用户的权限:

用户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&true FALSE
| OR(或) false|true TRUE
^ XOR(异或) false^true TRUE
! NOT(非) !false TRUE
&& AND(短路) false&&true FALSE
|| OR(短路) false||true TRUE

转载地址:http://tywfo.baihongyu.com/

你可能感兴趣的文章
移动大数据“后市场”受青睐 亟需数据深度学习人才
查看>>
贵阳高新区力争打造“千亿级大数据园区”
查看>>
安防众筹不止于卖产品 思维拓展刺激消费
查看>>
OpenSSH曝高危漏洞 会泄露私钥
查看>>
艾特网能获2016APCA用户满意品牌大奖
查看>>
《CCNP TSHOOT 300-135学习指南》——第2章 结构化故障检测与排除进程
查看>>
《Java EE 7精粹》—— 2.5 非阻塞I/O
查看>>
《Python数据科学实践指南》一2.2 字符串
查看>>
《R数据可视化手册》——1.1 安装包
查看>>
《iOS创意程序设计家》——导读
查看>>
spring-aop
查看>>
android RecycleView Adapter简单封装
查看>>
PgSQL · 案例分享 · 递归收敛优化
查看>>
Dart的数据库操作
查看>>
Codeforces 591 B Rebranding【Codeforces Round #327 (Div. 2)】
查看>>
命名难,难于上青天
查看>>
做完和做好不一样
查看>>
APUE读书笔记-05标准输入输出库(7)
查看>>
23 第一周作业
查看>>
DNS解析偶尔延迟
查看>>