这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用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;
}
当然,多权限的验证只要扩展一下就可以了。
几点注意事项:首先,一个系统可能有很多的操作,因此,请建立数据字典,以便查阅,修改时使用。其次,如果用数据库储存用户权限,请注意数值的有效范围。操作权限值请用唯一的整数!
- 浏览: 76620 次
- 性别:
- 来自: 北京
最新评论
-
memoryisking:
关于更多ConcurrentModificationExcep ...
java.util.ConcurrentModificationException原因 -
memoryisking:
关于更多TimeUnit的内容可以去看这里: 发生Concu ...
java.util.ConcurrentModificationException原因 -
yzzshmily:
yzzshmily 写道我今天也遇到这种情况了, checkC ...
谷歌浏览器中的 name 变量 -
yzzshmily:
我今天也遇到这种情况了, checkClientName(ne ...
谷歌浏览器中的 name 变量
相关推荐
功能实用,市面上安全框架常见能力与套路均已具备:支持 RESTful 权限控制,支持灵活的权限配置(代码配置方式优先级更高),支持基于配置文件的权限配置,支持基于代码的权限控制,支持基于注解的权限控制,设计简单...
Java 权限管理系统数据库设计(实用)
一份关于计算机专业的本科实习报告,题目是《OA系统用户权限控制流程与实现》,非常实用哦!
提出一种直接用在计算机并行口上,通过与计算机进行数据交换来识别计算机端软件合法性,从而控制软件运行权限的硬件加密锁及其实现方案. 加密锁以单片机为主控芯片,以不影响计算机正常使用打印端口为设计原则,以现代...
要求具备基本功能如下: (1)能够对角色信息进行添加、修改、删除、浏览等操作; (2)能够对权限信息进行添加、删除、修改和查询;...(4)系统操作简单,方便实用。 数据库在database文件夹中!
UI:传统html css,美观 漂亮 大方 实用 js框架:jquery 系统大部分使用AJAX操作。大大提高了用户体验 功能描述: 1.支持N级菜单导航,菜单显示方式支持目前支持2种模式分别: 菜单(无限级),横向(2级) 2....
这是Java学习的基础案例 很实用哦 大家可以学习一下
复制代码 代码如下: /* *控制访问表 * acl值 功能 * 1 需要登录 * 2 自身修改 * 4 需要组的权限集合 * 8 需要身份访问集合 * 16 身份被禁止访问 * 32 可访问的日期 * 64 可访问的周日 * 128 可访问的时间 * 256 ...
vsftp不同用户权限配置,网上关于vsftp权限配置的文章长篇大论,看了眼睛都花了。自己总结了下,简单实用,希望对大家有帮助。
只是单纯的实例,找实用的朋友请绕道。 功能概况: 1、页面访问权限、包括列表、增加、删除页面。 2、页面功能如删除按钮控制。 3、控制代码写在父类中,无需每个页面都调用。 4、约定大于一切。 5、愿你一天好心情...
本篇文章主要介绍了struts2如何使用拦截器进行用户权限控制实例,非常具有实用价值,需要的朋友可以参考下
基于角色的权限管理,可以对按钮或者WinForm 设置权限,稍加改造也可管理WEBForm的权限,本人在系统开发中就是利用此方法。一句话,简单、易用、易理解。
抓图工具小巧便捷实用,占用资源极微,图片转存太方便了。Win7设置最高管理权限方法 Win7系统经常会遇到不少程序无法运行的情况,多是因为无法获得相关权限而无法运行,出现所谓的“兼容性问题”。一般右键以管理员...
符合国情的RBAC(基于角色的访问控制),可以直接应用到你的系统。 权限资源 菜单权限 经理和业务员登陆系统拥有的功能菜单是不一样的 按钮权限 经理能够审批,而业务员不可以 数据权限 A业务员看不到B...
评价标准包括研究的创新性、实用性、方法的科学性以及论文的质量等方面。学生在毕业设计中获得的成绩也将直接影响其最终的学业成绩和学位授予。 总的来说,毕业设计是高等教育中的一项重要环节,通过此过程,学生...
对基于角色的访问控制(RBAC)模型进行了延伸和拓展,提出了一种细粒度权限控制的改进模型FG-RBAC,并在此模型基础上设计开发了一套能为企业信息系统(EIS)开发者和用户提供更简单、更实用、更快速的数据级权限管理...
JBob平台的权限体系是一个立体式的权限控制体系,横向按权限模式定义控制方式,纵向按权限级别和数据模式等控制权限粒度,最终实现简易实用的权限配置体系,能够高效、严密地获取和处理权限点集合,支持多个系统...