<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!-- 一个简单的Acegi配置 -->
<beans>
<!-- Acegi的过滤器链 -->
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value><![CDATA[
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
]]></value>
</property>
</bean>
<!-- 设置一个安全上下文。其中HttpSessionIntegrationFilter适用于大多数情形。它将Authentication对象保存在HTTP会话中,使之能够跨越多个请求。
-->
<bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter"/>
<bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter">
<constructor-arg value="/index.jsp"/> <!-- URL redirected to after logout -->
<constructor-arg>
<list>
<ref bean="rememberMeServices"/>
<bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/>
</list>
</constructor-arg>
</bean>
<!-- AuthenticationProcessingFilter是处理基于表单身份验证的过滤器。
authenticationFailureUrl指定当身份验证失败时
defaultTargetUrl定义了当出现目标URL不在HTTP会话中的异常情况时将发生什么。
这可能发生在用户通过浏览器书签或其他方式而不是通过SecurityEnforcementFilter到达登录页面的情况下。
filterProcessesUrl告诉AuthenticationProcessingFilter应该拦截哪个URL。
这个URL与登录表单中action属性的值一样。它的默认值为/j_acegi_security_check,
但我们在这里显式定义了该值,用于说明你可以根据需要改变这个值。
-->
<bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="authenticationFailureUrl" value="/acegilogin.jsp?login_error=1"/>
<property name="defaultTargetUrl" value="/"/>
<property name="filterProcessesUrl" value="/j_acegi_security_check"/>
<property name="rememberMeServices" ref="rememberMeServices"/>
</bean>
<bean id="securityContextHolderAwareRequestFilter" class="org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter"/>
<bean id="rememberMeProcessingFilter" class="org.acegisecurity.ui.rememberme.RememberMeProcessingFilter">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="rememberMeServices" ref="rememberMeServices"/>
</bean>
<bean id="anonymousProcessingFilter" class="org.acegisecurity.providers.anonymous.AnonymousProcessingFilter">
<property name="key" value="changeThis"/>
<property name="userAttribute" value="anonymousUser,ROLE_ANONYMOUS"/>
</bean>
<!-- 访问出现异常时的处理 -->
<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">
<!--AuthenticationProcessingFilterEntryPoint是一个提供给用户基于HTML的登录表单的认证入口点。 -->
<property name="authenticationEntryPoint">
<!-- 属性loginFromUrl配置了一个登录表单的URL。当需要用户登录时,
AuthenticationProcessingFilterEntryPoint会将用户重定向到该URL。
-->
<bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<property name="loginFormUrl" value="/acegilogin.jsp"/>
<property name="forceHttps" value="false"/>
</bean>
</property>
<!-- 访问权限禁止处理 -->
<property name="accessDeniedHandler">
<bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl">
<property name="errorPage" value="/accessDenied.jsp"/>
</bean>
</property>
</bean>
<!-- FilterSecurityInterceptor类负责执行安全拦截器的工作 -->
<bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
<!-- 认证管理器Bean的引用 -->
<property name="authenticationManager" ref="authenticationManager"/>
<!-- 访问决策(即授权)管理器Bean的引用 -->
<property name="accessDecisionManager">
<!-- Acegi的访问决策管理器如何计票
访问决策管理器 如 何 决 策
AffirmativeBased 当至少有一个投票者投允许访问票时允许访问
ConsensusBased 当所有投票者都投允许访问票时允许访问
UnanimousBased 当没有投票者投拒绝访问票时允许访问
-->
<bean class="org.acegisecurity.vote.AffirmativeBased">
<!--默认地,当全部投票者都投弃权票时,所有的访问决策管理者都将拒绝访问资源。
你可以配合为true,即建立了一个“沉默即同意”的策略。换句话说,如果所有的投票者都放弃投票,
则如同它们都投赞成票一样,访问被授权。
-->
<property name="allowIfAllAbstainDecisions" value="false"/>
<property name="decisionVoters">
<!-- decisionVoters属性为访问决策管理器提供一组投票者 -->
<list>
<!-- RoleVoter只在受保护资源有以ROLE_为前缀的配置属性才进行投票。然而,ROLE_前缀只是默认值。你可以选择通过设置rolePrefix属性来重载这个默认前缀:
<bean id="roleVoter"
class="net.sf.acegisecurity.vote.RoleVoter">
<property name="rolePrefix">
<value>GROUP_</value>
</property>
</bean>
在这里,默认的前缀被重载为GROUP_。
-->
<bean class="org.acegisecurity.vote.RoleVoter"/>
<bean class="org.acegisecurity.vote.AuthenticatedVoter"/>
</list>
</property>
</bean>
</property>
<!-- 属性objectDefinitionSource告诉安全拦截器被拦截的各种请求所需要的授权是什么.
第一行是一个指令,表明在比较请求的URL在和紧跟其后定义的模式之前必须首先正规化为小写字母。
该属性的其余几行将URL模式映射为允许用户访问这些URL时必须授予用户的权限。
PATTERN_TYPE_APACHE_ANT指令则URL模式可以采用类似与ANT,或不添加该指令,URL模式以正则表达式的形式描述,如:
<property name="objectDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
\A/admin/.*\Z=ROLE_ADMIN
\A/student/.*\Z=ROLE_STUDENT,ROLE_ALUMNI
\A/instruct/.*\Z=ROLE_INSTRUCTOR
</value>
</property>
-->
<property name="objectDefinitionSource">
<value><![CDATA[
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/secure/extreme/**=ROLE_SUPERVISOR
/secure/**=IS_AUTHENTICATED_REMEMBERED
/**=IS_AUTHENTICATED_ANONYMOUSLY
]]></value>
</property>
</bean>
<bean id="rememberMeServices" class="org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices">
<property name="userDetailsService" ref="userDetailsService"/>
<property name="key" value="changeThis"/>
</bean>
<!-- 认证管理器负责确定用户身份的
ProviderManager是认证管理器的一个实现,它将验证身份的责任委托给一个或多个认证提供者.
ProviderManag
没有合适的资源?快使用搜索试试~ 我知道了~
Acegi-security-samples-tutorial-1.0.7.zip 实例代码解析
共36个文件
jar:18个
jsp:5个
prefs:3个
4星 · 超过85%的资源 需积分: 9 176 下载量 188 浏览量
2008-09-25
12:53:06
上传
评论 4
收藏 3.08MB RAR 举报
温馨提示
Acegi-security-samples-tutorial-1.0.7.zip 实例代码解析:把官方的这个实例导入自己建的项目中,对其中的代码都加上了注释,有利于大家的学习。
资源推荐
资源详情
资源评论
收起资源包目录
AcegiTest.rar (36个子文件)
AcegiTest
WebContent
META-INF
MANIFEST.MF 39B
WEB-INF
web.xml 2KB
applicationContext-acegi-security.xml 10KB
lib
spring-aop-1.2.9.jar 157KB
spring-web-1.2.9.jar 140KB
commons-collections-3.1.jar 546KB
oro-2.0.8.jar 64KB
commons-codec-1.3.jar 46KB
commons-logging-1.0.4.jar 37KB
log4j-1.2.9.jar 344KB
commons-lang-2.1.jar 203KB
spring-core-1.2.9.jar 123KB
spring-beans-1.2.9.jar 228KB
jstl-1.0.jar 20KB
spring-dao-1.2.9.jar 93KB
spring-support-1.2.9.jar 162KB
standard-1.0.6.jar 497KB
spring-jdbc-1.2.9.jar 183KB
acegi-security-1.0.7.jar 536KB
spring-remoting-1.2.9.jar 138KB
spring-context-1.2.9.jar 108KB
users.properties 157B
secure
extreme
index.jsp 187B
index.jsp 195B
index.jsp 171B
accessDenied.jsp 532B
acegilogin.jsp 2KB
.settings
org.eclipse.wst.common.project.facet.core.xml 229B
org.eclipse.core.resources.prefs 327B
org.eclipse.wst.common.component 446B
org.eclipse.jst.common.project.facet.core.prefs 217B
org.eclipse.jdt.core.prefs 330B
src
log4j.properties 765B
.project 854B
.classpath 479B
build
classes
log4j.properties 765B
共 36 条
- 1
资源评论
- 我是可爱蛋蛋2015-01-08不错的资源。
- song7141864202012-11-07不错不错,蛮详细的,适合学习...
- 嘻嘻哈哈嘻嘻哈2013-03-01和官网的例子一样的,但是可以运行。
- flylzw2013-02-06注释很详细, 很容易理解, 谢谢LZ
- bangtt2012-09-20不错,可以运行。
foamflower
- 粉丝: 512
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功