这里介绍一种很常用,也比较Professor
的权限控制思路。
为了方便,我们这里定义a
^
b
为:a
的b
次方,并且为每一个操作设定一个唯一的整数值,例如:
删除A → 0
修改A → 1
添加A → 2
删除B → 3
修改B → 4
添加B → 5
……
理论上可以有N
个操作,这取决于你用于储存用户权限值的数据类型了。
这样,如果用户有权限:添加A → 2
;删除B → 3
;修改B → 4
那用户的权限值 purview =2
^
2+2
^
3+2
^
4
=28
,也就是2
的权的和了,化成二进制可以表示为11100
。
如果要验证用户是否有删除B的权限,就可以通过位与运算来实现。
即是:int value = purview & ((int)Math.pow(2,3))
;
你会发现,当用户有操作权限时,运算出来的结果都会等于这个操作需要的权限值!
原理:
位与运算,顾名思义就是对位进行与运算:
以上面的式子为例:purview & 2
^
3
也就是28 & 8
将它们化成二进制有:
11100
&
01000
-------------------
01000 == 8 (
十进制)
== 2
^
3
同理,如果要验证是否有删除A → 0
的权限
可以用:purview & ((int)Math.pow(2,0));
即:
11100
& 00001
--------------------
00000 == 0 (
十进制)
!= 2
^
0
这种算法的一个优点是速度快,可以同时处理N
个权限。
如果想验证是否同时有删除A → 0
和删除B → 3
的权限
可以用purview & (2
^
0+2
^
3)==(2
^
0+2
^
3) ? true : false;
设置多角色用户。根据权限值判断用户的角色……
下面提供一个Java
的单操作权限判断的代码:
//userPurview是用户具有的总权限
//optPurview是一个操作要求的权限为一个整数(没有经过权的!)
public static boolean checkPower(int userPurview, int optPurview) {
int purviewValue = (int)Math.pow(2, optPurview);
return (userPurview & purviewValue) == purviewValue;
}
当然,多权限的验证只要扩展一下就可以了。
几点注意事项:首先,一个系统可能有很多的操作,因此,请建立数据字典,以便查阅,修改时使用。其次,如果用数据库储存用户权限,请注意数值的有效范围。操作权限值请用唯一的整数!
补充:如果用Java
的int
类型的话,是32
位,最多只能保存31
个权限的运算,而对64
位的,估计也只能保存63
个权限,因此,对于更多的权限,应该进行分组,而且,过多的权限放在一起,也不易管理。
对于2
的N次方来说,从硬件最底层来说,只是N次左移而已,因此并不会占用太多的资源。当然,对于一些极端情况,可能并不是一种很好的解决方案,但对于一般的中小型系统,已经足够应付!此处只是对一种算法的介绍,并不带任何的排它性!!!(声明:此文援引自网络,个人感觉不错,所以贴出来供大家学习交流使用)
分享到:
相关推荐
这里我介绍一种很常用,也比较专业的权限控制思路。这里我用java语言描述,其实都差不多的。自己转一下就可以了。
总之,本资料包为计算机专业学生和开发者提供了一个实用的JSPSmart系统学习资源,通过阅读源代码和论文,用户可以深入理解权限管理与日志记录模块的设计思路和技术实现,为今后的学习和工作打下坚实的基础。...
本资源为计算机专业毕业生提供了一个全面、实用的ASP图书管理系统。该系统基于ASP技术构建,结合SQL Server数据库,实现了图书的借阅、归还、查询、管理等核心功能。同时,系统提供了友好的用户界面和完善的权限控制...
同时,论文部分详细介绍了系统的设计思路、实现方法和技术难点,为学生提供了一个完整的项目经验。 主要功能特点: 1. 药品信息管理:包括药品分类、药品录入、修改、删除等功能,方便药店对药品信息进行统一管理。...
计算机专业毕设ASP+ACCESS多功能论坛程序设计是一个集成了多种功能的在线论坛系统,旨在满足用户在交流、分享和学习等方面的需求。该项目采用了ASP(Active Server Pages)作为服务器端脚本语言,并结合ACCESS数据库...
权限控制:根据用户角色设定不同的权限,确保用户只能访问其权限范围内的功能。 数据安全:对用户数据进行加密存储、访问控制等措施,保护用户隐私和系统安全。 日志功能:记录关键操作日志,保留操作痕迹。
源代码包含系统的前台页面、后台管理页面以及相关的C#代码文件,实现了用户登录、权限控制、考勤数据录入与查询、报表生成等核心功能。论文部分则详细阐述了系统的设计思路、技术选型、数据库设计、功能实现以及测试...
计算机专业毕设精选 - ASP.NET学生管理系统(源代码+论文)是一个完整的毕业设计项目,专为计算机专业的学生打造。该项目采用ASP.NET技术,结合SQL Server数据库,实现了学生管理的基本功能,包括学生的增删改查、...
同时,系统还具有权限控制功能,防止非法访问和操作。 4. 统计分析功能强大:系统可以对车辆的使用情况、维修成本等进行统计分析,生成各类报表,为车辆管理部门提供决策支持。 5. 可扩展性强:系统采用模块化设计,...
论文详细介绍了系统的需求分析、系统设计、数据库设计、功能实现和测试等方面的内容,为学生提供了一个完整的设计思路和实现过程。 **源代码部分**: 源代码部分包含了项目的所有代码文件,采用Visual Studio 2019...
本资源为计算机专业的毕业设计项目,提供了一个基于ASP.NET技术的教务信息管理系统。该系统旨在帮助教育机构、学校等高效地管理学生、教师、课程等教务信息,实现信息的集中化、自动化和规范化。项目不仅包含了完整...
总之,本资源为计算机专业的毕业生提供了一个全面、实用的选课系统毕业设计参考方案。通过学习和实践,您将能够掌握ASP.NET技术在实际项目中的应用技巧,提升自己的编程能力和解决实际问题的能力。祝您毕业设计顺利...
本资源提供了一个基于ASP.NET技术的网络办公助理系统,旨在协助企业和团队实现高效、便捷的网络办公。该系统包含了用户登录、文件管理、日程安排、任务分配与跟踪等功能模块,可满足日常办公的基本需求。同时,系统...
此资源为计算机专业毕业设计提供了一个完整的实战项目。它是一个基于微信小程序的短视频系统,采用目前流行的SSM框架进行开发,实现了前后端分离,提高了系统的可维护性和扩展性。 一、项目简介 该系统旨在为用户...
6. **系统安全性**:系统采用了多种安全措施,如验证码验证、权限控制等,确保系统的稳定性和安全性。 **源代码及论文:** 本资源包含了项目的完整源代码和相关论文。源代码采用ASP语言编写,具有良好的可读性和可...
本资源提供了一个全面且功能丰富的ASP网络多功能办公系统设计的源代码和详细论文。该系统旨在满足现代企业和组织的办公自动化需求,提高工作效率和管理水平。通过使用ASP技术,系统实现了跨平台、易维护和可扩展的...
7. **权限控制与安全机制**:系统采用严格的权限控制机制,确保不同级别的用户只能访问相应的人事数据;同时采用加密技术保护敏感信息的安全。 **适用对象:** 本系统适用于各类型企业,特别是对于人事管理要求较...
20.修改关于在用户中心删除等操作没有权限控制的问题 21.修改网站打开伪静态后,单人悬赏在文件交付时没有办法下载 22.修改后台多处编辑带有链接的文本提交出错,屏蔽了embed、player单词 23.修改服务承诺完成...
JSP作业管理系统是一个基于Java Server Pages (JSP)技术构建的web应用程序,旨在为教育机构提供一个简便、高效的作业提交和评审平台。该系统通过其友好的用户界面,使得学生能够轻松地上传和管理他们的作业,同时也...
同时,我们也注重系统的稳定性和安全性,通过合理的数据库设计和权限控制,确保数据的完整性和保密性。 本项目的实施将极大地提升网吧的计费管理效率,为顾客提供更加优质的服务,同时也为网吧的长期发展奠定了坚实...