- 浏览: 388784 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (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 1132转载: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 1043long4j配置 转载:http://www.iteye. ... -
jpa 注解
2011-12-20 09:23 11839转:http://blog.csdn.net/gdweijin ... -
jna
2011-11-29 17:28 1540... -
eclipse设置
2011-11-16 08:45 869转:http://www.iteye.com/topic/11 ... -
深入分析 Java I/O 的工作机制
2011-11-14 08:57 894... -
java获得计算机信息
2011-10-29 13:03 1376采用singar.jar实现,需要将sigar-x86-win ... -
java内存机制
2011-10-24 13:01 1285转. Java内存机制详解 Ja ... -
缓存技术
2011-09-27 13:28 820一个培训的ppt,是介绍缓存知识的。有兴趣的可以参考:缓存技术 ... -
单点登录
2011-09-26 08:37 1603了解单点登录:: 可以使 ... -
继承和组合的关系
2011-08-18 09:17 913个人工作的感触: 首先框架的编写是难度很大,而工具 ... -
导入导出,创建databaselink
2011-08-10 15:56 2144pl/sql导出表结构和表 ... -
小结一下
2011-08-04 10:20 881觉得程序层面上是:数据类型(int long string) ... -
分析建模
2011-07-17 20:13 873系统建模与分析。 -
Java浮点数的精确计算
2011-06-27 16:10 1000... -
异常系统
2011-05-31 17:19 721http://www.iteye.com/topic/7217 ... -
jvisualvm
2011-01-11 21:09 927可以查看远程 本地的jvm 有两种方式 jmx jstatd ... -
字符编码
2011-01-07 11:23 1242最近被字符集搞得头大,基于为自己扫盲的目的,索性收集资料研 ...
相关推荐
1、角色管理:添加角色、编辑角色、删除角色、角色授权 2、权限管理:添加权限、编辑权限、删除权限、 3、用户管理:添加用户、编辑用户、删除用户 4、日志管理:登录日志 5、文章管理:模拟菜单
权限管理系统,或者资源授权管理中心,或者权限控制中台。资源空间(相当于应用系统)。资源组(相当于频道、模块)。资源可见(相当于菜单),可不见(相当于权限码)。主体组可见(相当于企业、机构、部门),不...
本文将深入探讨C#中的权限管理系统,包括授权、授权管理以及权限控制的相关概念和实践方法。 首先,我们要理解“权限”这一核心概念。在软件系统中,权限通常指的是用户或角色对系统资源(如文件、功能、窗口按钮等...
通过这个简单的Java权限管理系统项目,初学者可以了解到如何整合前后端,实现用户认证与授权,同时掌握数据库设计和SQL操作。此外,还能学习到Spring Security等框架的使用,提升对安全编程的理解。对于未来从事企业...
后台权限管理系统是企业信息化建设中的重要组成部分,它主要用于管理和控制不同用户在系统后台的操作权限。在这样的系统中,角色、菜单和按钮权限控制是核心功能,确保了系统的安全性和操作的准确性。 首先,我们来...
ASP.NET通用权限管理系统源代码(含文档、数据库) 1.菜单导航管理 2.操作按钮 3.角色管理 4.部门管理 5.用户管理(用户权限) 6.用户组管理(设置成员,用户组权限) 7.系统配置(动态配置系统参数) 8.附加属性...
描述中的“权限管理系统”通常涉及到用户身份验证、授权、角色管理和访问控制等多个方面。在C#中,我们可以利用ASP.NET Identity或自定义的身份验证服务来实现用户登录和验证。ASP.NET Identity提供了一套完整的身份...
权限管理的核心概念主要包括身份验证(Authentication)、授权(Authorization)和会话管理(Session Management)。以下是对这些概念的详细解释: 1. 身份验证:这是验证用户身份的过程,通常通过用户名和密码组合...
【C# MVC 权限管理源码】是一个用于构建企业级应用的重要组件,它涉及到用户、角色和权限的管理,是系统安全的核心部分。在基于ASP.NET MVC框架的开发中,这种权限管理系统可以帮助开发者实现对用户访问控制的精细化...
Flyme授权管理是一款专为魅族手机用户设计的系统应用,它主要负责管理手机上的权限分配,确保各个应用程序能够正常运行并保护用户的隐私安全。在Android操作系统的基础上,Flyme系统进行了深度定制,其中 Flyme 授权...
在IT领域,权限管理是一项至关重要的任务,尤其在企业级应用和系统中,它涉及到数据安全、用户访问控制以及合规性。"权限管理视频"很可能包含了一系列教程或讲解,旨在帮助用户理解和实施有效的权限管理系统。下面,...
首先,权限管理是任何复杂应用程序的基础,它确保用户只能访问他们被授权的数据和功能。在Winform权限管理系统框架中,这一概念通过角色(Role)、用户(User)和权限(Permission)的概念来体现。角色是权限的集合...
在IT行业中,权限管理系统是软件应用中的重要组成部分,它用于控制不同用户对系统资源的访问。本项目"用户权限管理模块(C++实现)"是一个用C++编程语言实现的权限管理解决方案,它包含了几个核心功能,如单例模式、...
它允许管理员精确地控制不同用户和角色对数据库对象的访问权限,从而防止未经授权的数据访问或修改。 1.1 概述 Greenplum的权限系统遵循PostgreSQL的模型,允许管理员为不同的用户或角色定义权限级别。权限分为多种...
在现代企业级应用开发中,权限管理是不可或缺的一部分,它确保用户只能访问他们被授权的资源。SpringBoot 和 Apache Shiro 是两个非常流行的 Java 开发框架,它们结合可以构建出高效且安全的权限管理系统。本篇文章...
在现代Web应用程序中,权限管理是一个重要组成部分,它确保只有经过授权的用户才能访问特定的资源或执行特定的操作。本文将详细探讨基于Vue前端权限管理的知识点。 首先,Vue.js是一种构建用户界面的渐进式框架,它...
授权管理程序,如文中提到的"授权管理-Root手机后权限管理利器",是专门为Root后的Android设备设计的工具,用于管理和控制各个应用程序对Root权限的访问。这些工具通常具有以下关键功能: 1. **授予和管理ROOT权限*...
在构建企业信息系统,尤其是办公自动化(OA)系统时,权限管理设计是不可或缺的重要组成部分。权限管理的核心目标是确保系统安全,提升操作效率,并提供灵活的角色分配机制。以下是对OA权限管理设计的详细说明: 1....
"授权管理"就是在Root后对这些高级权限进行管理的重要工具。 "授权管理-Root手机后权限管理利器"是一款专为已经Root的Android设备设计的应用,由刷机大师团队开发。它提供了全中文界面,使得普通用户也能轻松理解和...
在信息化社会,数据和信息的安全性至关重要,权限管理作为其中的关键环节,它确保只有授权的用户才能访问特定的资源,从而保护组织的核心资产。本文将深入探讨权限管理系统的概念、功能、设计原则以及常见实现技术。...