巧妙运用二进制验证权限
在权限分配中有多个权限级别,不同用户分别有多个不同的权限。
论坛的权限:
查看、发帖、投票、搜索
用户的权限:
用户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 |
Q Q: 121866673
来源: http://zxlovenet.cnblogs.com
声明: 本文原创发表于博客园,作者为初行本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
消息:此博客已停止更新,想了解最新博客更新请关注我的新博客 Noogel's notes
推荐: 推荐使用为知笔记(WizNote),它是电脑、手机、平板上都能用的云笔记软件,还可以分类管理和共享资料,使用我的邀请码注册:https://note.wiz.cn/i/06102d9e
打赏: 如果您觉得文章对您的工作有帮助,请小额打赏我一些,鼓励我写出更好的文章!

微信打赏

支付宝打赏
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库