Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 使用STRUTS,做权限验证!
【标  题】:使用STRUTS,做权限验证!
【关键字】:STRUTS
【来  源】:http://blog.csdn.net/linyihuan/archive/2006/11/30/1423398.aspx

使用STRUTS,做权限验证!

Your Ad Here 一:概念介绍

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-面面观!:【上一篇】
配置eclipse 3.2 +lomboz 3.2+eclipse 3.2汉化包:【下一篇】
【相关文章】
  • JSP Struts之HTML标签库详解
  • Struts+Spring+Hibernate 的两种组合配置方法
  • struts+hibernate项目debug总结
  • Spring2.0,Struts2.0,SpringSide 2.0--SpringSide 2.0M1 Release Notes
  • struts数据源配置 no suitable driver access denied for user ''@'localhost'
  • struts中文问题","struts国际化问题"——终极解决方案
  • 使用Struts的Token机制解决表单的重复提交
  • Myeclipse开发struts+hibernate+spring新手入门---环境配置
  • Myeclipse平台struts+hibernate+spring项目开发示例
  • spring + struts 应用集成小例
  • 【随机文章】
  • Windows 2000 与Windows 98 双系统并存常见问题解答
  • MiniDVD也称为cDVD
  • 《Beginning C# Objects》一本面向对象入门的好书
  • 一些常用的函数
  • 封神榜 新手玩家的一点路线和装备的建议
  • SCSI硬盘低级格式化
  • sence的动画中想在第一?完了以后在第二?调用一个外部的swf 等其播完后继续播第三
  • root口令的更改
  • tfn2k使用方法和对策(1)
  • 马士基
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.