第
1,
2,
3,
4 页
Acegi 安全配置
现在我们来讨论如何在 Spring 配置文件中配置 Acegi 安全性。 如上文所述,我们已经配置了业务逻辑 Bean,使其方法调用被 securityInterceptor
Bean 拦截以执行安全性检查。 让我们来看看这个 Bean 是如何配置的。 下面展示了 securityInterceptor
Bean 的 Spring 配置文件片段。 securityInterceptor
Bean 是由一个称为 securityInterceptor
的 Acegi 类提供的。 正如其名字的含意一样,该类用于加强方法调用的安全性(方法是拦截方法调用,检查调用者是否被授权)。
<beans> . . . <bean id="securityInterceptor" class="org.acegisecurity.intercept.method. aopalliance.MethodSecurityInterceptor"> <property name="authenticationManager"> <bean class="org.acegisecurity. providers.ProviderManager"> <property name="providers"> <list> <bean class="org.acegisecurity. providers.anonymous. AnonymousAuthenticationProvider"> <property name="key" value="changeThis"/> </bean> </list> </property> </bean> </property> <property name="accessDecisionManager"> <bean class="org.acegisecurity.vote. UnanimousBased"> <property name="decisionVoters"> <list> <bean class="org.acegisecurity. vote.RoleVoter"/> </list> </property> </bean> </property> <property name="objectDefinitionSource"> <value> com.mybank.bizlogic.AccountMgr. transferFunds=ROLE_MANAGER </value> </property> </bean> . . .</beans>
我们需要使用 authenticationManager
属性来配置 securityInterceptor
Bean 以指示使用哪种授权方式。 由于设计上依靠 Axis 事务处理程序执行授权,我们在此处不需要进行授权,只需使用 AnonymousAuthenticationProvider
进行配置。 另外,在 Axis 事务处理程序中创建授权标识的方式,将会使 Acegi 知道已经进行了授权,因此不会再次授权。 我们将在讨论 Axis 事务处理程序的时候详加讨论。
接下来,需要使用 accessDecisionManager
属性配置该 Bean 以指定它如何决定某人是否有对方法调用进行访问的权限。 Acegi 有三个具体的访问决定管理器实现:AffirmativeBased
、ConsensusBased
和 UnanimousBased
。 Acegi 作出访问决定的方式是:依靠投票者投票,决定是否授予某人访问权限来执行具体操作。 它通过计算票数来决定是否授予访问权限。 我们选择了 UnanimousBased
访问决定管理器,该管理器要求所有投票者通过投票来授予客户端执行特定操作的权限。 阅读 Acegi 文档可以深入了解其工作原理。 接下来,我们要使用一个投票者名单来配置 accessDecisionManager
。 本示例中,只有一个投票者,称为 RoleVoter
。 它是 Acegi 的一个类,根据基于角色的访问控制,该类对授予权限与否进行投票。 同样,阅读 Acegi 文档可以深入了解 RoleVoter
如何工作。
最后一个需要配置的属性是 objectDefinitionSource
。 这是授予权限的方式,即,对于各种受到安全保护的对象,对象上的方法调用需要授予何种访问权限。 此处,只需要保证 transferFunds()
方法的安全,并且只将权限授予 Manager 角色。 为达到此目的,我们需要列出类的全限定名称和方法的名称以及访问该方法的角色:
com.mybank.bizlogic.AccountMgr.transferFunds= ROLE_MANAGER
分享到:
相关推荐
<load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- ... --> </web-app> ``` 这将告诉...
Spring MVC 是一个强大的Java Web应用程序框架,用于构建高效、模块化的Web应用。在这个教程中,我们将探讨如何使用Spring MVC 3来创建一个简单的Web应用。首先,我们需要建立一个新的Web项目。 1. 创建Web项目: ...
<load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ``` - **默认配置方式**:默认情况下,...
Spring MVC 提供了一个清晰的架构来分离应用程序中的业务逻辑、用户界面以及控制流程。 **关键组件包括:** 1. **后端控制器(Handler):** 处理用户请求并返回相应的模型数据和视图。 2. **映射处理器...
它是一个基于模型-视图-控制器(MVC)设计模式的轻量级Web开发框架,使得开发者能够将业务逻辑、数据访问和用户界面进行分离,提高代码的可维护性和可测试性。 **环境搭建** 1. **Java环境**:首先确保你已经安装...
它提供了模型-视图-控制器(MVC)架构,使开发者能够将业务逻辑、数据处理和用户界面分离,从而实现更清晰、更可维护的代码结构。下面将详细讲解SpringMVC的搭建过程及其相关知识点。 1. **环境准备** 在开始...
SpringMVC 主要用于构建 Web 应用程序,并遵循 MVC(Model-View-Controller)设计模式,将应用程序分为模型、视图和控制器三个部分,从而实现更好的代码结构组织和业务逻辑的清晰分离。 **特点:** 1. **灵活的控制...
1. **创建项目**:在Eclipse中,选择"File" -> "New" -> "Dynamic Web Project",输入项目名称,例如"SpringMVCHelloWorld",并确保在"Target Runtime"中选择已安装的Apache Tomcat服务器。 2. **添加Spring MVC...
- `<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>` 这行代码指定了页面的脚本语言为Java,并导入了`java.util.*`包,同时设置了页面编码为GBK。 - `<% String path=request.getContextPath()...
4. **中文乱码问题**:在 web.xml 中添加 `<filter>` 来设置字符编码过滤器。 #### 七、总结 通过以上步骤,我们可以在 Eclipse 中有效地利用 Spring MVC 插件创建和管理 Web 应用程序。Spring MVC 的强大功能和...
Struts1是一个经典的Java Web框架,它以Model-View-Controller (MVC)设计模式为基础,简化了Web应用的开发。下面将详细讲解Struts1的开发过程。 首先,搭建Struts1的开发环境需要以下几个步骤: 1. 导入JAR包:从...
2. **分离**:实现真正的视图与代码分离,让视图层更加清晰、易于维护。 3. **灵活性**:开发框架应该提供足够的灵活性,允许开发者根据具体需求调整框架行为,而不是仅仅局限于特定的模式或方法。 4. **高性能*...
Struts2.1是Apache软件基金会的开源框架Struts的第二个主要版本,它是一个用于构建企业级Java web应用程序的MVC(模型-视图-控制器)框架。在本项目中,我们将探讨如何在MyEclipse6.5集成开发环境中创建一个基于...
3. **在MyEclipse中配置Tomcat**:启动MyEclipse,进入“Window” -> “Preferences” -> “Server” -> “Runtime Environments”。点击“Add”按钮,选择Apache Tomcat版本,然后指向之前安装的Tomcat目录,...
12. **Struts框架理解**:Struts是MVC(Model-View-Controller)架构的Java Web框架,它分离了业务逻辑、视图和控制层,提高了代码的可维护性和可扩展性。它使用ActionForm处理用户请求,通过配置文件定义请求路径和...
综上所述,“Handson 教师用书”覆盖了Java Web开发的多个重要方面,包括基本概念、技术实现细节以及最佳实践。通过这些内容的学习,读者不仅可以获得扎实的理论基础,还能掌握实用的开发技能,非常适合初学者入门及...
<%@ page import="java.sql.*" %> Connection conn = DBConnection.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM products"); while (rs....
【描述】"this is a java application baed on servelts,jsp ." 描述了这是一个用Java语言开发的Web应用程序,它依赖于Servlets和JSP技术。Servlets是Java平台上的服务器端编程模型,主要用于扩展Web服务器的功能,...
在Java面试中,常常会考察应聘者对基础概念的理解以及实际开发经验。以下是一些常见的Java面试题目及其详细解答: 1. **继承、封装、多态**: - 继承是类与类之间的关系,允许一个类(子类)继承另一个类(父类)...