`

关于Java权限控制算法

阅读更多

向大家介绍一种很不错,也是Linux中的权限管理算法。
  定义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的权限,就可以通过位与运算来实现。
  在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个权限,设置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类型最多可以储存11个权限和.如果超过,可以选择其它数据类型,而且建议不同模块,使用多个权限变量.

分享到:
评论

相关推荐

    Java权限控制的算法

    Java权限控制的算法,通过二进制数据来实现对权限的赋值,比对,提高了计算机运行效率也清晰一目了然

    权限控制算法的实现,很经典的

    根据给定文件的信息,本文将深入探讨一种经典的权限控制算法实现方法,并对该算法进行详细的解析。权限控制在软件系统特别是涉及用户交互的应用程序中尤为重要,它确保了不同用户角色能够访问到与其职责相匹配的数据...

    经典权限管理算法

    - **移动应用**:随着移动互联网的发展,移动应用同样面临着权限管理的需求,这种算法同样适用于移动平台上的权限控制。 #### 六、总结 通过以上分析可以看出,这种经典的权限管理算法不仅原理简单易懂,而且具有...

    java收发email算法

    - 发送和接收邮件时可能会遇到网络问题或权限错误,因此需要适当的异常处理机制。 9. **代码示例** 发送邮件的基本代码片段如下: ```java Properties props = new Properties(); props.put("mail.smtp.host",...

    java实现流量控制流量控制

    Java作为一种广泛使用的编程语言,同样提供了多种方法来实现流量控制。本篇文章将深入探讨Java如何实现流量控制,并结合具体实例来阐述相关知识点。 首先,我们要理解流量控制的基本原理。在TCP(传输控制协议)中...

    java权限设置,和java处理字符和二进制的转换

    Java权限设置是一种常用的权限控制方法,用于控制用户对系统资源的访问权限。在Java中,我们可以使用位运算来实现权限控制。下面是Java权限设置的知识点: 1. 权限控制算法:我们可以使用位运算来实现权限控制。...

    java的实现权限控制shiro jwt.docx

    Java中的权限控制是Web开发中一个重要的组成部分,它确保了应用程序的安全性和用户访问的合法性。Apache Shiro是一个强大且易用的Java安全框架,提供认证、授权、加密和会话管理功能,简化了处理安全需求的过程。在...

    JAVA中license控制实现示例.doc

    在 Java 中,license 控制是指通过生成和验证数字签名来控制软件的使用权限。这种方法广泛应用于 J2EE 应用中,特别是在系统购买的早期,提供有限制的 license 文件对系统进行限制。 在本示例中,我们使用 RSA 算法...

    Java 基础核心总结 +经典算法大全.rar

    访问控制权限继承 多态组合代理 向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 Throwable 常见的 Exception 与 Exception 有关的 Java 关键字 throws 和 throw try 、finally 、catch ...

    md.rar_MD-RBAC_MD5 JAVA_MD算法_md5_md5算法

    MD-RBAC(Role-Based Access Control,基于角色的访问控制)是权限管理的一种模型,它将用户与权限关联到特定的角色上。用户通过扮演不同的角色来获得相应的操作权限。这种模型简化了权限管理,因为只需要管理角色的...

    基于Java与Android的百度地图运动轨迹纠偏与去噪设计实现

    在Java和Android环境中,可以使用开源库如KalmanFilter或者自定义算法来实现。 4. **平滑算法**:除了纠偏外,还可以通过平滑算法改善轨迹。例如,线性插值、Spline插值、Lowess平滑等,这些方法能够平滑轨迹,使得...

    Java项目:推荐算法短视频平台(java+Springboot+SSM+jsp+maven+mysql)

    基于Springboot的推荐算法短视频平台系统设计与实现.系统分为管理员与普通用户两种角色。 1)登录模块 在进入系统首页后,首先看到的是登录界面,该界面会提供注册用户的功能,公告、平台咨询、视频中心、登录、注册...

    Java Cryptography Extension (JCE) 无限强度权限策略文件 8

    Java Cryptography Extension (JCE) 是Java平台的一个重要组件,主要负责提供高级的加密功能,支持各种加密算法,包括对称加密、非对称加密、哈希函数和数字签名等。在Java的标准版本中,出于安全性考虑,对于某些...

    基于Java的关联规则数据挖掘算法分析&学生社团管理系统设计(包含源代码+论文)

    此外,系统可能还需要实现权限控制、日志记录、异常处理等功能,这将涉及Spring Security、Log4j等相关技术。 在系统设计阶段,需要考虑到数据模型的建立,例如,学生、社团、活动等实体及其之间的关系。同时,还要...

    java 程序控制键盘鼠标

    ### Java程序控制键盘鼠标知识点详解 #### 一、引言 在软件开发过程中,有时我们需要让Java程序模拟用户的操作行为,比如自动填写表单、触发特定事件或进行自动化测试等场景。通过Java程序来实现对鼠标键盘的控制...

    克贝洛斯加密算法的实现 JAVA源代码

    在JAVA环境中实现Kerberos加密算法,我们可以利用Java Cryptography Extension (JCE) 提供的相关类库。 **Kerberos的工作原理:** 1. **票证授予服务(TGS)**:用户首先通过与Ticket Granting Server (TGS)通信,...

    java源码包---java 源码 大量 实例

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA远程控制软个

    7. **权限管理**:为了防止未经授权的访问,远程控制软件通常会包含权限管理系统,比如用户认证、角色权限分配等。 8. **错误处理与日志记录**:为了保证软件的稳定性和可维护性,良好的错误处理和日志记录机制是必...

    排序算法原理与实现(java)编银行JAVA笔试题二编程资料程资料

    java中有四种访问控制权限:public、private、protected和default。其中,private是最严格的访问控制权限,只能在定义该类的包中的其他类才能访问该类。 题目2:java关键字 java语言中有许多关键字,例如public、...

Global site tag (gtag.js) - Google Analytics