`

基于Struts的权限实现

阅读更多
一:概念介绍

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不熟悉的人使用
分享到:
评论

相关推荐

    struts2实现用户登录注册

    Struts2框架是基于Action和Result的设计模式,它的主要组件包括Action类、配置文件(struts.xml)、拦截器(Interceptors)以及结果类型(Result Types)。Action类是业务逻辑的载体,处理用户的请求;配置文件用于...

    基于Struts2实现报道管理系统

    **基于Struts2实现报道管理系统** Struts2是一款强大的MVC框架,用于构建Java Web应用程序。在报道管理系统中,Struts2起到了核心架构的作用,它提供了模型-视图-控制器的设计模式,使得开发者能够更有效地组织和...

    Struts的权限实现

    ### Struts的权限实现 #### 一、概念介绍 **1. 资源(Resource)** - **定义**: 在Struts框架中,资源是指系统内可以被操作的对象或功能,例如用户注册、用户信息修改等。 - **结构**: 资源在系统内部以树状结构...

    基于struts和heiernate权限管理系统

    在"基于Struts和Hibernate权限管理系统"中,这两个框架被巧妙地结合,以实现对用户访问权限的有效控制。 首先,Struts框架提供了强大的请求分发机制。当用户发起一个HTTP请求时,Struts框架会根据配置的...

    基于Struts 2+Hibernate+Spring实现论坛系统

    这个基于Struts 2+Hibernate+Spring实现的论坛系统,充分利用了这些框架的优势,为用户提供了交互性强、数据管理高效的在线讨论平台。 首先,Struts 2 是一个 MVC(Model-View-Controller)框架,它负责处理用户的...

    基于Struts2的个人信息管理系统

    基于Struts2的个人信息管理系统是使用这一框架来设计和实现的一个典型示例,它涵盖了用户管理、行程管理和文件操作等多个核心功能。 在用户管理模块中,Struts2提供了丰富的动作类(Action)和结果(Result)配置,...

    基于Struts 框架的BBS论坛系统

    在本项目“基于Struts框架的BBS论坛系统”中,开发者利用了Struts的强大功能来构建了一个功能完备的在线讨论平台。下面我们将深入探讨这个系统的相关知识点。 1. **Struts框架**:Struts是Apache软件基金会下的一个...

    struts实现的权限分配

    通过以上步骤,我们可以构建出一个完整的基于Struts的权限管理系统,实现对用户操作的精细控制,保障Web应用程序的安全运行。在实际开发中,要不断学习和适应新的技术和最佳实践,以提升系统的稳定性和可维护性。

    基于Struts 2实现的博客网站

    基于Struts 2实现的博客网站是典型的Web应用程序,它展示了如何利用Struts 2的核心特性来处理用户请求、管理业务逻辑以及呈现视图。 一、Struts 2框架核心概念与特性 1. **Action**:Struts 2中的Action类是业务...

    基于Struts的网上论坛BBS系统课程设计

    在"基于Struts的网上论坛BBS系统课程设计"中,我们将深入探讨如何利用Struts来构建一个功能完善的在线讨论平台。 1. **MVC模式**:Struts的核心是MVC模式,它将业务逻辑、数据和用户界面分离,使得开发和维护更加...

    基于Struts2的学生选课管理系统

    综上所述,基于Struts2的学生选课管理系统充分利用了开源技术和成熟框架的优势,实现了高效、稳定、易用的管理功能。这不仅降低了开发成本,也为企业或学校的信息管理提供了可靠的技术保障。通过不断优化和升级,...

    基于Struts2的用户权限管理

    在"基于Struts2的用户权限管理"项目中,它被用来处理用户的登录、权限控制以及不同角色间的差异化访问。这个系统的核心目标是实现安全、高效的角色与权限分配,以确保不同级别的用户只能访问他们被授权的页面和功能...

    基于struts+hibernate的bbs

    【基于Struts+Hibernate的BBS论坛】 在Web开发领域,Struts和Hibernate是两个非常重要的框架,它们分别处理表现层(Presentation Layer)和持久层(Persistence Layer)的问题。Struts是一个MVC(Model-View-...

    Struts权限过滤器

    Struts权限过滤器是Java Web开发中用于控制用户访问权限的关键组件,主要应用于基于Struts 2框架的应用程序。在Struts 2框架中,过滤器扮演着重要的角色,它们在HTTP请求到达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的文章管理系统

    这个"基于Struts的文章管理系统"是一个利用Struts框架实现的系统,它允许用户创建、编辑、查看和管理文章。在深入探讨其核心功能和实现细节之前,我们先来了解一下Struts框架的基础知识。 **Struts框架概述** 1. *...

    Struts2拦截器实现权限控制demo

    通过以上步骤,我们可以实现一个基本的基于Struts2拦截器的权限控制系统。这个demo对于初学者来说,是一个很好的起点,可以帮助他们理解如何在实际项目中结合Struts2的拦截器和权限控制来增强应用的安全性。在实际...

    基于Struts2+Spring+Hibernate+MySql的注册登录系统.zip

    总的来说,基于Struts2+Spring+Hibernate+MySql的注册登录系统是利用这些技术协同工作,实现了用户注册、登录的基本功能。Struts2处理请求,Spring管理组件和事务,Hibernate负责数据持久化,而MySql存储数据。...

Global site tag (gtag.js) - Google Analytics