一:概念介绍
1:)资源
可以使用的系统资源.比如注册用户是一种资源,修改用户信息也是一种资源.
资源在系统中呈现为一棵树.假如用户管理是一个节点.用户注册,用户信息
修改为用户管理的叶子。叶子具有不可分割性.
2:)角色
绑定可操作资源的集合。
比如系统管理员,可以使用全部资源.
一般用户,可以注册和修改查看自己的信息.
角色可以有依赖角色。也就是说现在系统中存在
RoleA,RoleB,RoleC ,RoleD 四种角色.
RoleD 倚赖RoleA
假设一个用户的角色是RoleD.
根据倚赖关系。默认有RoleA 的可使用资源.
3:)用户
系统中的使用者,因为角色可以倚赖,所以一个用户只有一种角色.
二:资源的分配
上述三个概念之间的绑定关系为用户绑定一个角色,角色绑定若干资源.
角色绑定资源有两种绑定,一种是绑定叶子,一种绑定节点。绑定节点有
两种一种只绑定节点下的叶子,一种绑定节点下所有的叶子.在系统中权
限的分配需要做到一个角色可以访问整个资源树中的任意节点和叶子的组合.
三:资源树的构造
我们使用namespace的方式去构造一棵树.根节点为空。
下面形如:sysytem.user.useradd,system.department.add,system.common
上面的可以理解为system是一个节点,并有两个子节点user,department,
一个叶子common
四:Struts中的资源标识
在Struts中一个Action的配置通常如下:
<action path="/editSubscription"
type="org.apache.struts.webapp.example.EditSubscriptionAction"
attribute="subscriptionForm"
scope="request"
validate="false">
<forward name="failure" path="/mainMenu.jsp"/>
<forward name="success" path="/subscription.jsp"/>
</action>
为了使没一个Action绑定到一个跟节点下,我们加一个选项把上面的配置修改为
<action path="/editSubscription"
type="org.apache.struts.webapp.example.EditSubscriptionAction"
attribute="subscriptionForm"
scope="request"
rights="system.user"
validate="false">
<forward name="failure" path="/mainMenu.jsp"/>
<forward name="success" path="/subscription.jsp"/>
</action>
为了在xml parse的时候可以加载上面的配置,我们需要修改一下Struts的源代码
修改org/apache/struts/config/ActionConfig
增加如下代码
protected String rights="common";
public String getRights(){
return this.rights;
}
public void setRights(String rights){
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
this.rights=rights;
}
假如修改成功后我们把ActionMapping 打印出来会看到相关的配置
五:权限分配的实现
1:)实现角色资源的绑定
在我的实现中我使用xml文件去配置如下:
<role name="01">
<resource-list>
<resource name="test" url="test.jsp" menu="false"/>
<resource name="user" url="user.jsp" menu="true"/>
<!--绑定绑定一个叶子-->
</resource-list>
<node-list>
<node name="system.test" include="false">
<!--绑定绑定一个节点如果include为true绑定所有子叶子-->
</node-list>
</role>
2:)权限的判断
这一部分有很多中实现方式,一种所有的Action继承BaseAction
在BaseAction里面实现,并在没一个Action里面去调用判断.
另外一种交给Struts去判断
org.apache.struts.action.RequestProcessor
里面有一个processActionPerform
调用Action的execute去执行Action
我们可以修改processActionPerform让其在执行execute前先执行权限检查
如果是这样的话,必须修改org.apache.struts.action.Action
让一个方法去实现权限判断.
如果使用第二种需要修改蛮多源代码,不建议对Struts不熟悉的人使用
分享到:
相关推荐
第一章 JAVA的网络功能与编程 5 1.1 JAVA语言简介 5 1.2 JAVA语言在网络上的运用 5 1.3 sevlet技术简介 5 ...4.6.1 管理员权限设置功能的实现 54 4.6.2 个人口令修改功能实现 57 总结 59 参考文献 60
基于Struts技术的图书管理系统 第一章 JAVA的网络功能与编程 5 1.1 JAVA语言简介 5 1.2 JAVA语言在网络上的运用 5 1.3 sevlet技术简介 5 第二章 Struts概述 7 2.1 Struts的由来和发展 7 2.1.1 MVC简介 7 2.1.2 jsp...
Struts_Spring_Hibernate实现的基于RBAC的权限管理系统Java源码
Struts_Spring_Hibernate实现的基于RBAC的权限管理系统
Struts1.x+DButils实现的基于角色资源的权限
基于Struts+Spring+Hibernate+MySQL+Tomcat的中小企业办公自动化系统(源程序+开题报告+论文) 系统的主要功能概述如下: (1) 用户身份验证模块 本系统功能的开发与设计,是完全针对公司内部进行办公管理...
STRUTS2拦截器控制页面访问权限的设计与实现,解决基于STRUTS2的web应用的程序访问控制,防止非法访问
并指出基于Struts 和Hibernate 框架的轻量级J2EE 架构必将成为开发企业级应用的主流技术。同时本文介绍了基于角色的访问控制理论RBAC 的基本概念,在此基础上设计并实现了一个权限管理系统。实践表明,该设计使业务...
这个是我在项目中实现的一个基于角色的权限管理系统;实现RBAC0级权限模型;绝对是精品代码; 欢迎交流;qq:158751041
java基于B/S实现的权限管理系统,基于Struts,hibernate实现的通用权限管理系统,希望对初学者有一定的帮助
使用Struts_Spring_Hibernate实现的基于RBAC的权限管理系统,希望对大家有帮助.(其spring.zip 是一个优秀的开源框架,参阅其源程序有助我们提高java设计水平,希望源程序对下载者有用!)
(1)该项目是基于spring3+struts2+hibernate3+spring security3的权限管理项目 (2)后台我已经实现了权限管理,包括用户,角色和资源的分配。前台实现了spring security3的管理 (3)网上案例普遍是后台单一登陆。...
(1)权限管理模块,区分不同登陆人员的使用界限,管理员划定操作员的工作范围。 (2)员工管理模块,对员工的个人基本信息进行增、删、改、查的功能,并且可以通过查询功能,查询数据库中储存的信息,进行基本操作。...
本系统是一个独立的系统,用来解决企业采购信息的管理问题。采用JSP技术构建了一个有效而且实用的企业采购信息管理...不同权限的操作员只能对其拥有权限操作的订单进行操作。 5.信息查询 根据关键字快速检索信息。
(1) 图书管理系统可以按照用户权限和实现功能的不同分为两部分:外部学生对数据库的查阅访问和内部管理人员对图书记录的管理维护。 (2) 用户注册,需要通过Struts2字段校验判断用户注册页面中的用户名、密码、年龄...
6.使用拦截器实现权限验证 35 7.拦截器中的注解 37 8.使用PreResultListener实现回调 39 六、使用标签 40 1.基础表单标签 40 2.单选按钮和复选框: 41 3.三种方式实现下拉列表 41 4.二级联动 42 5.其它表单标签 44 6...