删除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和库,...
在当今计算机科学领域,算法设计是基础学科之一,同时...它不仅为算法爱好者提供了一个展示和交流算法实现的平台,也为企业级应用的开发者提供了高质量的算法实践案例,从而在算法教育和软件开发实践中发挥着重要作用。
同时,通过Java的权限控制和认证机制,如JAAS(Java Authentication and Authorization Service),可以确保只有授权的用户和应用才能访问RFID数据。 在压缩包文件"JRHF"中,可能包含了以下内容: 1. RFID数据解析...
通过"java0323"这个文件名,我们可以推测这可能是项目的源代码或者某个开发阶段的成果,具体细节可能包括类结构、模块划分、关键算法实现等。不过,由于没有提供具体的文件内容,我们无法深入探讨这些细节。
本文档所讨论的“基于java的协同过滤算法的体育商品推荐系统设计与实现”,主要探讨如何利用Java语言和相关技术栈,构建一个高效准确的体育商品推荐系统。该系统的核心技术是协同过滤算法,它主要分为用户-用户协同...
5. 文件操作的错误处理和权限控制。 6. 可能的搜索功能实现,包括文件过滤和递归遍历。 7. 性能优化策略,如分页和懒加载。 通过实践这个项目,开发者不仅可以深入理解Java的文件操作,还能提升GUI编程和面向对象...
首先,基于Java字节码的RBAC权限控制系统意味着系统能够动态地对Java类进行字节码增强,以实现权限校验逻辑的植入。这种技术允许在不改变原有业务代码的情况下,通过AOP(面向切面编程)的方式,在运行时对方法调用...
每个模块都有其独特的功能和设计考虑,例如用户管理模块负责用户的身份验证和权限控制,而文件加密和解密模块则是软件核心功能的体现。通过JAVA的加密和解密API,软件能够对文件内容进行安全处理,确保数据的机密性...
此外,系统可能还需要实现权限控制、日志记录、异常处理等功能,这将涉及Spring Security、Log4j等相关技术。 在系统设计阶段,需要考虑到数据模型的建立,例如,学生、社团、活动等实体及其之间的关系。同时,还要...