- 浏览: 842350 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (530)
- Java编程 (64)
- C/C++/D (6)
- .Net/C# (9)
- Ruby (12)
- JavaScript (77)
- XML (1)
- JSON (1)
- Ajax (17)
- ExtJs (81)
- YUI (1)
- JQuery (7)
- DWR (1)
- HTML (7)
- CSS (7)
- Database (6)
- PowerDesigner (23)
- DB2 (2)
- Oracle (57)
- MS SQL Server (8)
- MySQL (6)
- JSP/Servlet/JSTL/TagLib (3)
- Spring (1)
- Hibernate (0)
- iText (0)
- Struts (0)
- Struts2 (0)
- iReport (0)
- FreeMarker (0)
- HttpClient (1)
- POI (6)
- FckEditor (15)
- Eclipse / MyEclipse (10)
- IntelliJ IDEA (0)
- NetBeans (0)
- Tomcat (11)
- WebLogic (1)
- Jboss (3)
- jetty (4)
- IIS (2)
- CVS/VSS (1)
- FTP (1)
- Windows/DOS (6)
- Linux/Unix (0)
- 软件建模 UML (0)
- Design Pattern & Thinking In Programming (10)
- 数据结构与算法 (12)
- 软件项目管理 (9)
- 行业应用解决方案 (3)
- 电脑软件与故障解决 (13)
- 编程语言 (1)
- 十万个为什么 (3)
- JBPM (2)
- sysbase (2)
- JDBC (8)
- Ant (2)
- Case-计算机辅助软件工程 (1)
- WebService (4)
- 浏览器 (1)
最新评论
-
gaoqiangjava:
同一楼,还请大手帮解决
JAVA读取word文件 -
hyl523:
// 判断数组中的第一个值是否未定义,如果未定义,便定义为空对 ...
javascript面向对象之二 命名空间 -
ping12132200:
ping12132200 写道我抱着个错不是因为:body标签 ...
extjs在IE报对象不支持此属性或方法 -
ping12132200:
我抱着个错不是因为:body标签内的第一个元素不能为文本tex ...
extjs在IE报对象不支持此属性或方法 -
fireinjava:
呀,不错,转走了,谢谢啦~
利用OpenOffice将word转换成PDF
这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用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;
}
当然,多权限的验证只要扩展一下就可以了。
几点注意事项:首先,一个系统可能有很多的操作,因此,请建立数据字典,以便查阅,修改时使用。其次,如果用数据库储存用户权限,请注意数值的有效范围。操作权限值请用唯一的整数!
http://pcedu.pconline.com.cn/empolder/gj/java/0607/835188.html
发表评论
-
java调用dll方法
2011-06-02 21:56 1595Java语言本身具有跨平台性,如果通过Java调用DLL的技术 ... -
DIV+CSS
2011-05-31 13:07 897http://www.divcss5.com/ -
getWriter() has already been called for this response的解决办法
2011-05-30 14:15 3711Servlet规范说明,不能既调用 response.getO ... -
CVS客户端
2011-05-27 14:54 904http://www.syntevo.com/index.ht ... -
UML工具
2011-05-25 18:59 894http://www.umlchina.com/Tools/N ... -
applicationcontext.xml怎么分模块简化配置?
2011-05-22 18:02 2245(1) 在用spring做项止的时候,我们经常会在appli ... -
Struts1.2分模块后的路径问题
2011-05-22 18:00 16101.某项目分模块的web.xml配置如下: <i ... -
java API chm html 1.5 1.6 中文版英文版 帮助文档
2011-05-14 10:45 2672J2SE DK & API下载 ————————- h ... -
ClientAbortException原因探究
2010-12-23 16:17 1873WEB是部署在TOMCAT5.5.17下面的,采用JNDI链接 ... -
java游戏 http://blog.csdn.net/cping1982/archive/2009/06/10/4258704.aspx
2010-11-08 22:31 1247http://blog.csdn.net/cping1982/ ... -
Java中字符串(String)的存储和赋值原理
2010-11-08 22:14 1228可能很多java的初学者对String的存储和赋值有迷惑, ... -
Java中字符串的最大长度
2010-11-08 22:12 1314在cpp中为了可移植性,string的长度是string::s ... -
Java与XML联合编程之DOM篇
2010-10-06 13:37 887一、DOM初步 DOM是Document Object ... -
jexl解析表达式字符串
2010-10-06 11:44 1953网址:http://commons.apache.org/je ... -
Java中getResourceAsStream的用法
2010-10-06 11:31 2004Java中getResourceAsStream的用法 首先 ... -
Class.getResourceAsStream 和 ClassLoader.getResourceAsStream
2010-10-06 11:08 854Class.getResourceAsStream 和 Cla ... -
利用第三方的Jar包内的类和方法来判别文件编码
2010-08-06 13:07 1781今天在论坛里看见了一个人发帖子问,如何查看文件的编码。有一个人 ... -
将Java程序作成exe文件的几种方法
2010-08-06 13:04 961看到网上有同志的介绍将Java程序作成exe文件的方法,写的不 ... -
Java基本类型转换总结
2010-07-26 19:49 1389数值型转换成字符型 // 基本数据类型, int i_a ... -
怎样不使用中间变量来交换两个变量的值?
2010-07-10 21:39 1505int 的话就+后再减.string 的话就连接再截取. ...
相关推荐
一种常用的权限控制算法的实现.htm
根据给定文件的信息,本文将深入探讨一种经典的权限控制算法实现方法,并对该算法进行详细的解析。权限控制在软件系统特别是涉及用户交互的应用程序中尤为重要,它确保了不同用户角色能够访问到与其职责相匹配的数据...
### 用户登录权限分配的模型与算法实现 #### 一、引言 随着计算机硬件技术和软件平台的快速发展,军事管理信息系统(Military Management Information System,简称MMIS)已成为军队现代化管理的重要工具之一。...
本文将围绕一种经典的权限管理算法展开讨论,通过对算法原理的解析以及示例代码的展示,帮助读者深入理解这种算法的应用场景与实现方式。 #### 二、算法原理 该算法基于二进制位运算来实现权限管理。通过为不同的...
VB中的算法实现通常涉及到对基本数据类型的操作,如整数、浮点数、字符串,以及更复杂的数据结构,比如数组和集合。在编写人事管理系统时,可能会用到以下知识点: 1. **数据存储与检索**:在CS(客户端/服务器)...
Java作为一种广泛使用的编程语言,同样提供了多种方法来实现流量控制。本篇文章将深入探讨Java如何实现流量控制,并结合具体实例来阐述相关知识点。 首先,我们要理解流量控制的基本原理。在TCP(传输控制协议)中...
综上所述,"用户权限管理模块(C++实现)"是一个集成了C++面向对象编程、单例模式、用户权限控制和密码安全管理的实用系统。通过这样的设计,可以有效地控制和保护软件系统的资源,为用户提供安全、便捷的使用体验。
本文主要讨论了一种针对空管系统中CPU占用率的监测算法的实现方法。 首先,文章指出在基于SNMP(简单网络管理协议)的网管系统中,扩展MIB(管理信息库)以加入CPU占用率对象,是实现远程监控的关键。通过周期性地...
CP-ABE算法是一种基于属性的加密算法,能够实现细粒度的访问控制。该算法可以将用户的属性作为加密的key,从而实现对数据的访问控制。在本方案中,CP-ABE算法被应用于实现用户级细粒度安全访问控制区块链数据。 ...
实现这些功能时,如果每一种权限都编写重复的代码来检查用户是否有相应的权限,那么这不仅会导致代码冗余,还会增加后期维护的复杂度。 #### 模板方法模式原理 模板方法模式的核心思想在于定义一个算法的骨架,并...
AES是一种广泛使用的对称加密算法,以其高效和安全性著称。"ES加密/解密算法"可能是描述错误,通常指的是AES算法在Elasticsearch(ES)中的应用,因为标签提到了"Elasticsearch",而且在安全领域,Elasticsearch也会...
朱爱梅和黄毅在《基于神经网络算法的移动云计算数据安全访问控制办法与实现》一文中提出了一种结合神经网络算法的移动云计算数据安全访问控制办法。文章从传统技术和创新访问控制模型两个角度分析了神经网络算法在...
由荷兰计算机科学家Dijkstra提出,它是最早的并发控制算法之一。Dekker算法基于两个进程间的通信,每个进程都有一个变量表示它是否准备访问共享资源。当两个进程都准备访问时,它们会通过比较对方的状态来决定哪一个...
- **levy.m**:Levy飞行分布,是一种常用的模拟自然界的随机游走过程,常用于优化算法的全局探索。 - **license.txt**:软件许可文件,描述了代码的使用权限和条款。 在MATLAB中实现EEFO算法,需要结合生物启发式...
- BCrypt是一种常用的密码哈希算法,可以有效防止彩虹表攻击。在Spring Security中,我们可以在`UserDetailsService`的实现类中使用`BCryptPasswordEncoder`对用户密码进行加密存储。 - 当用户尝试登录时,Spring ...
本文协议提出了一种新的实现方法,利用非对称公钥密码算法保证在线注册的安全性,允许用户和SN在不安全环境下进行注册。同时,协议结合轻量级的对称密钥算法,旨在解决IIoT的高可靠性、实时性和安全性需求。通过权限...
在本项目中,"用Python运用常用算法实现餐厅信息管理系统"是一个典型的计算机科学课程大作业,旨在让学生掌握Python编程语言以及常见算法的应用。这个系统可能包括顾客管理、菜品管理、订单处理等多个模块,通过实际...
本文介绍了一种基于STD总线的9CPU控制系统,采用8098微处理器,其中主处理机负责管理时间片的分配,确保所有从处理机能公平访问公共资源。主处理机根据各个从处理机的状态动态分配时间片,允许从处理机在分配到的...