删除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的权限,就可以通过位与运算来实现。在Java里,位与运算运算符号为&,即是:
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;
}
当然,多权限的验证只要扩展一下就可以了。
几点注意事项:首先,一个系统可能有很多的操作,因此,请建立数据字典,以便查阅,修改时使用。其次,如果用数据库储存用户权限,请注意数值的有效范围。操作权限值请用唯一的整数。
来源:http://www.zxbc.cn/html/20070426/7587.html
分享到:
相关推荐
Java权限控制的算法,通过二进制数据来实现对权限的赋值,比对,提高了计算机运行效率也清晰一目了然
根据给定文件的信息,本文将深入探讨一种经典的权限控制算法实现方法,并对该算法进行详细的解析。权限控制在软件系统特别是涉及用户交互的应用程序中尤为重要,它确保了不同用户角色能够访问到与其职责相匹配的数据...
Java作为一种广泛使用的编程语言,同样提供了多种方法来实现流量控制。本篇文章将深入探讨Java如何实现流量控制,并结合具体实例来阐述相关知识点。 首先,我们要理解流量控制的基本原理。在TCP(传输控制协议)中...
JAVA中license控制实现示例 在 Java 中,license 控制是指通过生成和验证数字签名来控制软件的使用权限。这种方法广泛应用于 J2EE 应用中,特别是在系统购买的早期,提供有限制的 license 文件对系统进行限制。 在...
#### 三、算法实现 接下来,我们通过具体的Java代码来展示如何实现这一算法。 ```java public class PermissionManager { public static void main(String[] args) { int tmp = 11; // 假设用户权限值为11 int ...
Java中的权限控制是Web开发中一个重要的组成部分,它确保了应用程序的安全性和用户访问的合法性。Apache Shiro是一个强大且易用的Java安全框架,提供认证、授权、加密和会话管理功能,简化了处理安全需求的过程。在...
1. 权限控制算法:我们可以使用位运算来实现权限控制。首先,我们定义每一个操作的唯一整数值,然后使用位运算符来检查用户是否具有某个操作权限。 2. 权限值的计算:我们可以使用位运算来计算用户的权限值。例如,...
Java图形化界面实现的个人通讯录管理...总之,这个个人通讯录管理系统结合了Java GUI编程、数据管理、用户认证和权限控制等多个IT领域的核心知识点,是一个综合性的项目,对于学习和提升Java应用开发能力非常有帮助。
访问控制权限继承 多态组合代理 向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 Throwable 常见的 Exception 与 Exception 有关的 Java 关键字 throws 和 throw try 、finally 、catch ...
在这篇文章中,我们将探讨java中的排序算法原理和实现,通过java笔试题二的编程资料,帮助读者更好地理解java语言的基本概念和算法实现。 题目1:访问控制 在java中,访问控制是指控制类或类成员的可访问性。java...
在IT行业中,远程桌面监控是一种常见且实用的技术,它允许用户通过网络访问并控制远端计算机的桌面。这里我们关注的是一个用Java实现的远程桌面监控解决方案。Java作为一种跨平台的编程语言,提供了丰富的API和库,...
5. 文件操作的错误处理和权限控制。 6. 可能的搜索功能实现,包括文件过滤和递归遍历。 7. 性能优化策略,如分页和懒加载。 通过实践这个项目,开发者不仅可以深入理解Java的文件操作,还能提升GUI编程和面向对象...
此外,系统可能还需要实现权限控制、日志记录、异常处理等功能,这将涉及Spring Security、Log4j等相关技术。 在系统设计阶段,需要考虑到数据模型的建立,例如,学生、社团、活动等实体及其之间的关系。同时,还要...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
在Java开发中,实现自动补全功能是一种常见的需求,特别是在Web应用中,它可以极大地提高用户输入的效率和体验。这个项目使用了Java后端技术和AJAX前端技术来完成这一功能。接下来,我们将深入探讨如何利用Java和...
通过"java0323"这个文件名,我们可以推测这可能是项目的源代码或者某个开发阶段的成果,具体细节可能包括类结构、模块划分、关键算法实现等。不过,由于没有提供具体的文件内容,我们无法深入探讨这些细节。
在IT行业中,构建一个论坛(BBS)...同时,项目还包含了数据库操作、权限控制和高效的分页技术,这些都为提升用户体验和系统性能提供了坚实基础。通过深入学习这些知识点,开发者可以在构建类似系统时更加得心应手。
以下是一些Java常见的面试题目及其详细解释: 1. **Java的垃圾回收机制是什么?** Java的垃圾回收机制(Garbage Collection, GC)负责自动管理内存,通过识别不再使用的对象并释放它们占用的空间,防止内存泄漏。...