`
LoveLZY
  • 浏览: 57369 次
  • 性别: Icon_minigender_1
博客专栏
Group-logo
从零编写RPC框架
浏览量:0
社区版块
存档分类
最新评论

java web权限管理

    博客分类:
  • web
阅读更多
   之前项目采用spring4+security3做的权限管理,采用通用的 用户-角色,角色-资源来管理权限。但是太依赖角色,同时是粗粒度的,决定采用二进制权限管理,自己构建
   1 依然采用组织概念,但是同时保留用户
   2 资源可以赋权给组织,也可以赋权给用户,权限区分读写
   3 用户可以在多个组织
   4 用户权限覆盖组织权限
   下面列出2进制权限算法演示
  
   //资源采用url表示
   把所有拥有独立权限的资源(url)写入数据文件例如mysql
   1、权限值的设定
  用二进制来表示权限值应该是按位来设置,每个位占一个,表示一种权限,如:

    00000001表示十进制1,
    00000010表示十进制2,
    00000100表示十进制4,
    00001000表示十进制8;

  依次类推,才能清晰正确的标识,多种权限的赋予则使用“或运算”,此时各位比较混乱,如00000011表示十进制3,此时它意味着拥有两种权限。

Long userrolevalue ;//用户的权限值,根据他属于的权限组,这个值会不同
Long oprolevalue   ;//一个操作的权限值,根据他属于的权限组,这个值会不同

2、权限的赋予(或运算)
userrolevalue = userrolevalue | oprolevalue
假设一个用户u1,他的初始权限值为0(00000000)。如果要指定他有经理的权限,经理的权限值为4(00000100),在第三个二进制位为1。
很显然,userrolevalue =  0 | 4 ,值为4,如果u1要同时具有文员、主管、经理的权限呢,
userrolevalue = 0 | 1   00000000 | 00000001  = 00000001
userrolevalue = 1 | 2   00000001 | 00000010  = 00000011
userrolevalue = 3 | 4   00000011 | 00000100  = 00000111
这样,第1、2、3位都是1了,用 “或”的好处就是只改变指定位的值,如果用户已经有了该权限,直接简单的用加法来做会出错,而用"或"再赋予一次,也不会出错,如下:
userrolevalue = 7 | 4   00000111 | 00000100  = 00000111

3、权限的除去(求补、与运算)
userrolevalue = userrolevalue & (~oprolevalue)
假设一个用户u1,他的初始权限值为7(00000111),说明他能做文员、主管、经理权限组所能作的所有操作。如果不想让他有主管权限组能作的操作呢,那么,就要把他的权限值变为00000101,而主管权限组的权限值是00000010,显然简单的用减法,肯定也是不行的,但是先对00000010作补运算,可以得到11111101,再同00000111作与运算,就得到了00000101,这样就只对第二位作了改变,不会影响到其它位,我们的目的也就达到了。

对于一个操作,哪些权限组能操作它,也可以用与运算来做,不让某些权限组有些操作的权限,也可以先求补,再作与运算来解决。

4、权限的验证(与运算)
(userrolevalue & oprolevalue) != 0表示拥有oprolevalue所表示权限

 例如:现有一个用户User的权限为6(00000110),通过&(与)运算,使用公式 "(User的权限 & 权限值) != 0" 即可判断拥有某个权限值表示的权限----6 & 2 == 2 (00000110 & 00000010 == 00000010),表示User拥有主管权限;6 & 4 !=0 (00000110 & 00000100 == 00000100) ,表示User拥有经理权限;6 & 1 == 0(00000110 & 00000001 == 00000000),表示User无文员权限;  





分享到:
评论

相关推荐

    java web权限管理系统

    Java Web权限管理系统是一种基于Web的应用程序,用于管理和控制不同用户对系统资源的访问权限。它通常采用分层架构,结合了多种技术来实现安全、高效的功能。在这个系统中,我们看到核心的技术栈包括Spring、...

    java web 系统权限设计 源码

    综上所述,这个"java web 系统权限设计 源码"资源对于学习和实践Java Web权限管理有很高的价值。结合提供的文档,开发者可以深入研究权限设计的各种策略和技术,并将其应用到自己的项目中,提升系统安全性和用户体验...

    基于java web 的权限管理系统(源码+数据库).rar

    在Java Web权限管理系统中,关键知识点包括: 1. **MVC架构**:模型负责业务逻辑,视图负责展示,控制器负责协调模型和视图。理解并实现这一架构模式对于理解Web应用的结构至关重要。 2. **Servlet和JSP**:Java ...

    java 后台权限管理系统

    是一个简单高效的后台权限管理系统。项目基础框架采用全新的Java Web开发框架 —— Spring Boot2.0.4,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用Mybatis,同时引入了通用Mapper和PageHelper插件,...

    开源的Java web员工管理系统

    8. **权限控制**:考虑到安全性,系统可能实现了角色和权限管理,如Spring Security或Apache Shiro,限制不同用户访问特定资源。 9. **部署与运行**:项目文件`project-zy-office`很可能是整个项目的源码或打包后的...

    基于java web的人事管理系统

    【基于Java Web的人事管理系统详解】 Java Web技术是构建企业级Web应用的主流选择,它结合了Java语言的强大特性和Web应用的灵活性。基于Java Web的人事管理系统是一种常见且实用的项目,通常用于教学和实践,帮助...

    Java Web开发学生管理系统

    1. 用户登录与权限管理:系统应具备用户认证功能,只有授权的管理员或教师才能访问系统。这涉及到数据库操作,如存储用户名、密码(一般需要加密存储),以及角色和权限的分配。 2. 学生信息管理:包括添加、删除、...

    基于java web 的图书管理系统

    《基于Java Web的图书管理系统》的设计与实现是一个典型的软件工程实践,它涵盖了系统分析、概要设计、详细设计以及测试等多个关键环节。该系统旨在提供一个高效、便捷的图书管理平台,服务于图书馆工作人员和广大...

    java web成绩管理系统

    - **用户登录与权限管理**:系统需要验证管理员身份,确保只有授权用户能访问和修改成绩。 - **成绩录入**:管理员可以添加、编辑和删除单个或批量的成绩。 - **成绩查询**:支持按学生姓名、学号、课程名等条件...

    java web学生信息管理系统

    此外,系统可能还涉及到权限控制,如角色权限管理(Role-Based Access Control, RBAC),确保只有授权用户才能访问特定资源。 开发过程中,版本控制工具如Git必不可少,用于协同开发和版本管理。测试方面,JUnit和...

    Java Web考勤管理系统

    Java Web考勤管理系统是一款基于Java技术的Web应用程序,主要用于企业或机构的员工考勤管理。在这样的系统中,用户可以通过Web浏览器进行考勤记录的录入、查询、统计和分析,从而提升工作效率,确保考勤数据的准确性...

    Java Web 网上书店管理系统

    【Java Web网上书店管理系统】是一个基于Java Web技术的J2EE应用程序,主要用于实现图书的在线销售、用户管理、订单处理等功能。这个系统的核心是利用Java的强大力量和灵活性,结合Web技术,为用户提供便捷的在线...

    课程设计-基于Java web的驾校学员管理系统(源码+数据库).zip

    这是一个基于Java Web技术的驾校学员管理系统,用于课程设计目的,包含源码和数据库配置文件。系统的核心功能包括学籍管理、体检管理、成绩管理和驾照管理,涵盖了驾校日常运营中的主要环节。 首先,从技术栈来看,...

    java web 图书管理系统

    《Java Web图书管理系统》是一个基于Java Web技术实现的典型应用,它主要涵盖了Web开发中的核心概念和技术...同时,这也是一个可以持续扩展和优化的项目,例如增加用户权限管理、推荐系统等功能,以满足更多实际需求。

    Java通用后台系统+权限管理

    【Java通用后台系统+权限管理】是一个基于Java技术构建的后台管理系统,它的核心特性在于其通用性和可扩展性。这个系统旨在提供一个基础框架,开发者可以根据实际需求进行功能的添加和定制,使得软件开发变得更加...

    Java web 交友网站

    这个项目的核心是使用Java Web技术栈来构建一个功能完善的交友系统,其中包括用户注册、登录、个人信息管理、好友查找与添加、消息交互等功能。通过分析这个项目的源代码,我们可以深入理解Java Web开发的基本流程和...

    基于java web的论文管理系统

    【基于Java Web的论文管理系统】是一个使用Java Web技术和MySQL数据库构建的动态网页应用。这个系统主要功能涵盖了论文的管理操作,包括添加论文、删除论文、修改论文信息以及查看日志列表,为用户提供了一套完整的...

    java web项目企业进销存管理系统

    《Java Web项目:企业进销存管理系统的深度解析》 在信息技术日新月异的今天,企业对于高效、精准的管理工具的需求日益增强。"Java Web项目企业进销存管理系统"便是这样一款针对企业管理核心流程——进、销、存进行...

    java web权限访问过滤器

    在Java Web开发中,权限访问控制是至关重要的一个环节,它确保了只有具有特定权限的用户才能访问特定的资源或执行特定的操作。本教程将详细讲解如何使用Java Web中的过滤器(Filter)来实现这样的访问控制。过滤器是...

    java web 仓库管理系统

    【Java Web 仓库管理系统详解】 Java Web 仓库管理系统是一种基于Java技术构建的,用于企业管理仓库库存、订单、供应商等业务流程的应用程序。该系统利用Web技术实现远程访问和跨平台操作,为企业提供高效、便捷的...

Global site tag (gtag.js) - Google Analytics