- 浏览: 385816 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (314)
- java (132)
- 生活 (13)
- javase模式 (6)
- weblogic (4)
- jquery (5)
- sql (21)
- ecside (1)
- el (3)
- css (5)
- spring (7)
- ireport (2)
- linux (14)
- struts2 (2)
- jstl (1)
- rmi (1)
- rose (9)
- js (6)
- swing (4)
- webservice (1)
- jboss (1)
- ejb3 (2)
- xml (1)
- 线程 (9)
- socket (3)
- jms (2)
- tomcat (10)
- 领域驱动 (3)
- json (3)
- 权限 (2)
- jvm (1)
- 书籍 (1)
- eclipse RCP (0)
- 数据库设计 (10)
- 软件分析建模 (5)
- 分析建模 (3)
- hibernate jpa (5)
- Java 获取系统信息,包括CPU使用率、硬盘大小、网卡状态、系统信息等 (1)
- 项目管理 (2)
- 财务 (0)
- oracle (2)
- 需求 (2)
- rcp gef (0)
- c++ (1)
- hadoop (2)
- BIGDATA (3)
- c (6)
最新评论
-
lh_kevin:
...
jpa 注解 -
一别梦心:
你好,我也遇到此问题了。就你贴的那段代码,你说了两种解决方式, ...
Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法 -
fireinjava:
...
el表达式 -
宋建勇:
...
JSON: property "xxx" has no getter method in class "..." -
handawei:
有道理,jpa是orm框架的java标准,它关注的是对象到关系 ...
jpa 注解
绝妙的权限控制算法
对原文作者说声对不住啊,不知道是那个高人的想法,现在发出来,和大家一起分享,好帖,不要沉了!
这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用java语言描述,其实都差不多的。要换成其他的语言主,自己转一下就可以了。为了方便起见,我们这里定义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个权限。如果想验证是否同时有删除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; }
当然,多权限的验证只要扩展一下就可以了。
几点注意事项:首先,一个系统可能有很多的操作,因此,请建立数据字典,以便查阅,修改时使用。其次,如果用数据库储存用户权限,请注意数值的有效范围。操作权限值请用唯一的整数!
评论
发表评论
-
字符串,Volatile
2013-03-18 12:01 1119转载:http://www.ibm.com/de ... -
qian rushi
2012-12-01 10:13 0唐攀,华清远见高级研 ... -
110道 C语言 题目 超经典中的经典
2012-10-21 08:57 0... -
LOG4J
2012-08-07 10:34 1034long4j配置 转载:http://www.iteye. ... -
jpa 注解
2011-12-20 09:23 11821转:http://blog.csdn.net/gdweijin ... -
jna
2011-11-29 17:28 1525... -
eclipse设置
2011-11-16 08:45 864转:http://www.iteye.com/topic/11 ... -
深入分析 Java I/O 的工作机制
2011-11-14 08:57 887... -
java获得计算机信息
2011-10-29 13:03 1365采用singar.jar实现,需要将sigar-x86-win ... -
java内存机制
2011-10-24 13:01 1276转. Java内存机制详解 Ja ... -
缓存技术
2011-09-27 13:28 813一个培训的ppt,是介绍缓存知识的。有兴趣的可以参考:缓存技术 ... -
单点登录
2011-09-26 08:37 1594了解单点登录:: 可以使 ... -
继承和组合的关系
2011-08-18 09:17 902个人工作的感触: 首先框架的编写是难度很大,而工具 ... -
导入导出,创建databaselink
2011-08-10 15:56 2124pl/sql导出表结构和表 ... -
小结一下
2011-08-04 10:20 860觉得程序层面上是:数据类型(int long string) ... -
分析建模
2011-07-17 20:13 864系统建模与分析。 -
Java浮点数的精确计算
2011-06-27 16:10 987... -
异常系统
2011-05-31 17:19 707http://www.iteye.com/topic/7217 ... -
jvisualvm
2011-01-11 21:09 906可以查看远程 本地的jvm 有两种方式 jmx jstatd ... -
字符编码
2011-01-07 11:23 1232最近被字符集搞得头大,基于为自己扫盲的目的,索性收集资料研 ...
相关推荐
本文将深入探讨C#中的权限管理系统,包括授权、授权管理以及权限控制的相关概念和实践方法。 首先,我们要理解“权限”这一核心概念。在软件系统中,权限通常指的是用户或角色对系统资源(如文件、功能、窗口按钮等...
1、角色管理:添加角色、编辑角色、删除角色、角色授权 2、权限管理:添加权限、编辑权限、删除权限、 3、用户管理:添加用户、编辑用户、删除用户 4、日志管理:登录日志 5、文章管理:模拟菜单
授权管理程序,如文中提到的"授权管理-Root手机后权限管理利器",是专门为Root后的Android设备设计的工具,用于管理和控制各个应用程序对Root权限的访问。这些工具通常具有以下关键功能: 1. **授予和管理ROOT权限*...
"授权管理"就是在Root后对这些高级权限进行管理的重要工具。 "授权管理-Root手机后权限管理利器"是一款专为已经Root的Android设备设计的应用,由刷机大师团队开发。它提供了全中文界面,使得普通用户也能轻松理解和...
又来分享一款基于最新thinkphp5开源框架5.0.13版本开发的通用后台权限管理系统,这是一款基于ThinkPHP5.0.13 + layui2.2.45 + ECharts +Mysql开发的后台管理框架,PHP版本要求提升到5.5。集成了一般应用所必须的基础...
- 授权管理允许管理员将基本权限或角色授予用户或用户组。如果用户同时属于多个角色、职位或项目组,则用户最终的权限是所有来源权限的合并。 #### 七、物理数据模型 基于上述设计思想,权限管理系统需要构建以下...
- **授权管理**:包括系统用户管理、属性管理和模块管理,支持对用户、属性和模块资源的分配。 - **鉴权服务**:提供登录和权限调用接口,确保用户能够正确登录并拥有进行特定操作的权限。 - **日志管理**:记录用户...
ASP.NET通用权限管理系统源代码(含文档、数据库) 1.菜单导航管理 2.操作按钮 3.角色管理 4.部门管理 5.用户管理(用户权限) 6.用户组管理(设置成员,用户组权限) 7.系统配置(动态配置系统参数) 8.附加属性...
**权限管理系统概述** 权限管理系统是IT行业中至关重要的组成部分,它主要用于控制不同用户对系统资源的访问权限。在JSP(JavaServer Pages)技术的支持下,我们可以构建一个灵活且功能强大的权限管理解决方案。JSP...
在权限管理系统的实现中,ASP.NET 2.0的内置身份验证和授权机制起到了关键作用。 权限管理的核心是用户认证与授权。在ASP.NET中,这通常通过Forms身份验证实现,用户通过登录界面提供凭证,系统验证后授予访问权限...
授权功能使得管理员能将角色赋予特定的用户或用户组,确保他们能根据角色获取相应的访问权限。 分组管理进一步细化了权限控制。分组可以看作是角色的一个集合,管理员可以创建、编辑或删除分组,并对分组内的成员...
在IT行业中,权限管理系统是软件应用中的重要组成部分,它用于控制不同用户对系统资源的访问。本项目"用户权限管理模块(C++实现)"是一个用C++编程语言实现的权限管理解决方案,它包含了几个核心功能,如单例模式、...
1. 权限管理模型:该模型基于企业资源统一管理和授权,实现了对不同系统使用者的权限管理。 2. 资源管理:通过资源分组和角色构建,实现了对资源的细粒度化管理。 3. 角色管理:构建了系统的管理角色树,业务角色和...
在"pas_right.rar_DELPHI 权限_DELPHI 权限管理_Delphi管理系统"这个压缩包中,重点讨论的是如何在Delphi环境中实现权限管理和数据库管理系统的构建。 权限管理是任何复杂系统的核心组成部分,特别是在涉及到用户...
“Kinguser授权管理”是由Kingroot团队开发的一款安卓手机权限管理软件,具有root权限授权、软件权限管理两大功能。 与Superuser相比,“Kinguser授权管理”具备以下6大特色,更适合Android开发者及普通用户使用: 1...
【PHP权限管理系统源代码】是基于PHP编程语言开发的一个用于管理用户权限的系统。这个系统在个人学习PHP的过程中,由专业导师指导完成,提供了一种有效地控制和分配不同用户访问和操作权限的方法。通过理解并分析这...
【标题】"管理系统系列--后台管理系统,集成权限管理"揭示了这是一个专为后台操作设计的系统,具有用户管理和权限控制的核心功能。此类系统通常用于企业级应用,帮助管理员有效地管理用户账户,分配不同级别的访问...
它允许管理员精确地控制不同用户和角色对数据库对象的访问权限,从而防止未经授权的数据访问或修改。 1.1 概述 Greenplum的权限系统遵循PostgreSQL的模型,允许管理员为不同的用户或角色定义权限级别。权限分为多种...