java web权限管理

之前项目采用spring4+security3做的权限管理,采用通用的 用户-角色,角色-资源来管理权限。但是太依赖角色,同时是粗粒度的,决定采用二进制权限管理,自己构建 
   1 依然采用组织概念,但是同时保留用户 
   2 资源可以赋权给组织,也可以赋权给用户,权限区分读写 
   3 用户可以在多个组织 
   4 用户权限覆盖组织权限 
   下面列出2进制权限算法演示

Java代码  

  1. //资源采用url表示
  2. 把所有拥有独立权限的资源(url)写入数据文件例如mysql
  3. 1、权限值的设定
  4. 用二进制来表示权限值应该是按位来设置,每个位占一个,表示一种权限,如:
  5. 00000001表示十进制1,
  6. 00000010表示十进制2,
  7. 00000100表示十进制4,
  8. 00001000表示十进制8;
  9. 依次类推,才能清晰正确的标识,多种权限的赋予则使用“或运算”,此时各位比较混乱,如00000011表示十进制3,此时它意味着拥有两种权限。
  10. Long userrolevalue ;//用户的权限值,根据他属于的权限组,这个值会不同
  11. Long oprolevalue   ;//一个操作的权限值,根据他属于的权限组,这个值会不同
  12. 2、权限的赋予(或运算)
  13. userrolevalue = userrolevalue | oprolevalue
  14. 假设一个用户u1,他的初始权限值为0(00000000)。如果要指定他有经理的权限,经理的权限值为4(00000100),在第三个二进制位为1。
  15. 很显然,userrolevalue =  0 | 4 ,值为4,如果u1要同时具有文员、主管、经理的权限呢,
  16. userrolevalue = 0 | 1   00000000 | 00000001  = 00000001
  17. userrolevalue = 1 | 2   00000001 | 00000010  = 00000011
  18. userrolevalue = 3 | 4   00000011 | 00000100  = 00000111
  19. 这样,第1、2、3位都是1了,用 “或”的好处就是只改变指定位的值,如果用户已经有了该权限,直接简单的用加法来做会出错,而用"或"再赋予一次,也不会出错,如下:
  20. userrolevalue = 7 | 4   00000111 | 00000100  = 00000111
  21. 3、权限的除去(求补、与运算)
  22. userrolevalue = userrolevalue & (~oprolevalue)
  23. 假设一个用户u1,他的初始权限值为7(00000111),说明他能做文员、主管、经理权限组所能作的所有操作。如果不想让他有主管权限组能作的操作呢,那么,就要把他的权限值变为00000101,而主管权限组的权限值是00000010,显然简单的用减法,肯定也是不行的,但是先对00000010作补运算,可以得到11111101,再同00000111作与运算,就得到了00000101,这样就只对第二位作了改变,不会影响到其它位,我们的目的也就达到了。
  24. 对于一个操作,哪些权限组能操作它,也可以用与运算来做,不让某些权限组有些操作的权限,也可以先求补,再作与运算来解决。
  25. 4、权限的验证(与运算)
  26. (userrolevalue & oprolevalue) != 0表示拥有oprolevalue所表示权限
  27.  例如:现有一个用户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无文员权限;  


获取【下载地址】

时间: 2024-10-22 09:14:01

java web权限管理的相关文章

go web 权限管理 解决方案 (面向对象权限 ABAC / Casbin)

go web 权限管理 解决方案 (面向对象权限 ABAC / Casbin) 说明 ABAC调用 github.com/casbin/casbin abac_model.conf [request_definition] r = sub, obj, act [policy_definition] p = sub, obj,act [policy_effect] e = some(where (p.eft == allow)) [matchers] m = r.sub.App == r.obj.

Java Web会话管理

一.Cookie会话 cookie技术会话数据会保存在浏览器客户端 cookie技术核心: 1.构造cookie对象 2.设置cookie:有效访问时间(setMaxAge),有效访问路径(setPath),设置cookie的值(setValue) 3.发送cookie到客户端保存:response.addCookie发送cookie 4.服务器接收cookie:request.getCookie() Cookie原理: 1)服务器创建cookie对象,把会话数据存储到cookie对象中.new

Java基础认知--权限管理

所谓“万变不离其宗”,“宗”即本,本质.不管如何错综变化只要抓住本质,就能拨开云雾.这句话反过来也可以这样说,只要摸透本质就可幻化无穷.上层建筑要想建的高建的漂亮,底层必须牢固可靠.所以打好底层能力是能爬的高的关键.这里我们不提智商,性格,思维模式,沟通表达啊这些底层,我们不说那些抽象宏观的东西,这里我们聚焦于一些具体的技术.学技术也一样,先弄懂本质基础,才能玩的溜.基础需要不断的巩固加强,此系列的文章我会写一些自己对Java的基础知识的理解认知. 此篇的主题为Java的权限管理. 首先一个事物

java web简单权限管理设计

一套最基本的权限管理包括用户.角色.资源. 数据库设计 我的设计如下: 用户:user 角色:role 用户-角色:user_role 资源:resource(包括上级菜单.子菜单.按钮等资源) 角色-资源:role_resource 标准的权限管理系统设计为以上5张表. 注:用户.用户-角色我就不做说明了,这两个是很简单的两块,用户的crud,以及为用户分配角色(多对多的关系)稍微琢磨一下就清楚了,下面都是针对为角色分配权限的实现 后台实现 展示层采用ztree树 <%@ page conte

Java web自定义标签按钮级别权限控制完美诠释(jplogic 快速开发平台)

接下来跟大家聊聊JavaWeb中权限控制,往大的方向说可以聊聊整合应用系统中的权限控制.在聊权限控制之前先跟大家聊聊RBAC.那么什么是RBAC呢?RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联的,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理.在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色.角色可依新的需求和系统的

微服务迁移记(五):WEB层搭建(3)-简单的权限管理

一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 四.SpringSecurity集成 参考:<微服务迁移记(五):WEB层搭建(2)-SpringSecurity集成> 五.FreeMarker集成 参考:<微服务迁移记(五):WEB层搭建(3)-FreeMarker集成> 六.简单权限管理 实现一个简单的到按钮级权限管理,基于数据库扩展.不支持数据级权限,菜单只到二级(可以扩展至

基于java web的机票订购管理系统设计与实现

获取项目源文件,技术交流与指导联系Q:1225467431 摘  要 随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,旅游也逐渐成为普通老百姓的生活组成部分,飞机票预定查询系统在各机票预定网点中的作用也越显重要.目前,我国一些旅行社和酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预定工作.因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统势在必行.

基于吉日嘎底层架构的通用权限管理Web端UI更新:参考DTcms后台界面

经一周的研究学习,看了国内的H+.HUI等,国外的PaperDashboardPro.Make.Metronic BootStrap等,最终选定用一个轻量的,适合中国人的,来自DTcms的后台管理UI来改造吉日嘎拉的通用权限管理Web端的UI. js+css+图片文件如下 新增一个Menu.ashx文件,用于输出当前用户权限可以查看的所有菜单. 新增Main.aspx文件用于主框架,所有内容也放在名为fraContent的iframe中.其它涉及的登录跳转小修改暂时略过. 有图有真相,先上图:

[原创]java WEB学习笔记28: 会话与状态管理Cookie 机制

1.会话与状态管理 1)背景 ① HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的: ② 作为 web 服务器,必须能够采用一种机制来唯一地标识一个用户,同时记录该用户的状态: ③ 问题:怎么才能实现网上商店中的购物车呢:某个用户从网站的登录页面登入后,再进入购物页面购物时,负责处理购物请求的服务器程序必须知道处理上一次请求的程序所得到的用户信息. 2)会话和会话状态 ① WEB应用中的会话:指一个客户端浏览器与WEB服务