`
anson_xu
  • 浏览: 505900 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类

一个acegi配置文件applicationContext-security-acegi.xm

    博客分类:
  • SSH
阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<!--
- A simple "base bones" Acegi Security configuration.
-
- The sample includes the "popular" features that people tend to use.
- Specifically, form authentication, remember-me, and anonymous processing.
- Other features aren't setup, as these can be added later by inserting
- the relevant XML fragments as specified in the Reference Guide.
-
- To assist new users, the filters specified in the FilterChainProxy are
- declared in the application context in the same order. Collaborators
- required by those filters are placed at the end of the file.
-
- $Id: applicationContext-acegi-security.xml 1513 2006-05-29 13:32:12Z benalex $
-->

<beans>

<bean id="filterChainProxy"
  class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
</value>
</property>
</bean>

<bean id="httpSessionContextIntegrationFilter"
  class="org.acegisecurity.context.HttpSessionContextIntegrationFilter"/>

<bean id="logoutFilter"
  class="org.acegisecurity.ui.logout.LogoutFilter">
<constructor-arg value="/login.jsp"/>
<!-- URL redirected to after logout -->
<constructor-arg>
<list>
<ref bean="rememberMeServices"/>
<bean
class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/>
</list>
</constructor-arg>
</bean>

<bean id="authenticationProcessingFilter"
  class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
<property name="authenticationManager"
  ref="authenticationManager"/>
<property name="authenticationFailureUrl"
  value="/login.jsp?login_error=1"/>
<property name="defaultTargetUrl" value="/login.do?method=acegiLogin"/>
<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">
<property name="authenticationEntryPoint">
<bean
class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<property name="loginFormUrl" value="/login.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>

<bean id="filterInvocationInterceptor"
  class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
<property name="authenticationManager"
  ref="authenticationManager"/>
<property name="accessDecisionManager">
   <ref local="accessDecisionManager"/>
</property>
<!-- property name="objectDefinitionSource"
  ref="filterDefinitionSource"/-->
  <!--
         filterInvocationInterceptor在执行转向url前检查objectDefinitionSource中设定的用户权限信息
         过程:
         首先,objectDefinitionSource中定义了访问URL需要的属性信息(这里的属性信息仅仅是标志,告诉accessDecisionManager要用哪些voter来投票)
         然后,authenticationManager掉用自己的provider来对用户的认证信息进行校验。
         最后,有投票者根据用户持有认证和访问url需要的属性,调用自己的voter来投票,决定是否允许访问。
     -->
<property name="objectDefinitionSource">
    <value>
    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
    PATTERN_TYPE_APACHE_ANT
    /admin/**=ROLE_ADMIN,ROLE_USER
    /users/**=ROLE_USER,ROLE_ADMINISTRATOR
    /web-inf/users/**=ROLE_ADMINISTRATOR
   </value>
   
</property>
</bean>
<!-- 现在没用filterDefinitionSource -->
<!-- 
<bean id="filterDefinitionSource"
  class="org.springside.bookstore.components.acegi.intercept.web.DBFilterInvocationDefinitionSource">
<property name="convertUrlToLowercaseBeforeComparison"
  value="true"/>
<property name="useAntPath" value="true"/>
<property name="acegiCacheManager" ref="acegiCacheManager"/>
</bean>

-->

<bean id="rememberMeServices"
  class="org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices">
<property name="userDetailsService" ref="userDetailsService"/>
<property name="key" value="changeThis"/>
</bean>
<!--1 ========================= 认证管理器 ========================= -->
<bean id="authenticationManager"
  class="org.acegisecurity.providers.ProviderManager">
<property name="providers">
<list>
<ref local="daoAuthenticationProvider"/>
<bean
class="org.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider">
<property name="key" value="changeThis"/>
</bean>
<bean
class="org.acegisecurity.providers.rememberme.RememberMeAuthenticationProvider">
<property name="key" value="changeThis"/>
</bean>
</list>
</property>
</bean>

<!-- 使用Md5算法加密 -->
<bean id="passwordEncoder"
  class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"/>

<bean id="daoAuthenticationProvider"
  class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
  <!-- 此处可以自己写DAO实现userDetailsService -->
<property name="userDetailsService" ref="userDetailsService"/>
<property name="userCache" ref="userCache"/>
<!-- <property name="passwordEncoder" ref="passwordEncoder"/>   -->
</bean>

<bean name="userCache" class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache">
<property name="cache">
<bean
class="org.springframework.cache.ehcache.EhCacheFactoryBean" autowire="byName">
<property name="cacheManager" ref="cacheManager"/>
<property name="cacheName" value="userCache"/>
</bean>
</property>
</bean>

<!-- 自建一个resourceCache以存放resource对应的role关系 -->
<!--
resource缓存实际执行对象

<bean id="resourceCache"
  class="org.springside.bookstore.components.acegi.resourcedetails.ResourceCache"
  autowire="byName">
<property name="cache">
<bean id="resourceCacheBackend"
  class="org.springframework.cache.ehcache.EhCacheFactoryBean">
<property name="cacheManager" ref="cacheManager"/>
<property name="cacheName" value="resourceCache"/>
</bean>
</property>
</bean>
-->

<!-- UserDetailsService is the most commonly frequently Acegi Security interface implemented by end users -->
<!-- 可用自己的service实现 -->
<!--  <bean id="userDetailsService"
  class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">
<property name="dataSource" ref="dbManager"/>
<property name="usersByUsernameQuery">
<value>
select username,password,1 from lottery_users where enabled='1'
and username = ?
</value>
</property>
<property name="authoritiesByUsernameQuery">
<value>
select u.username,g.name from lottery_users u,lottery_groups g where u.group_id=g.id and u.enabled='1'
and u.username = ?
</value>
</property>
</bean>
-->
<bean id="userDetailsService"
class="com.lottery.service.AcegiUserDeitailsService">
<property name="dbManager" ref="dbManager" />
</bean>

<!-- This bean is optional; it isn't used by any other bean as it only listens and logs -->
<bean id="loggerListener"
  class="org.acegisecurity.event.authentication.LoggerListener"/>

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation">
<value>classpath:ehcache.xml</value>
</property>
</bean>
   <!--
<bean id="acegiCacheManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
  abstract="false" autowire="byName">
<property name="transactionManager" ref="transactionManager"/>
<property name="proxyTargetClass" value="true"/>
<property name="target">
<bean class="org.springside.bookstore.components.acegi.cache.AcegiCacheManagerImpl">
<property name="resourceCache" ref="resourceCache"></property>
<property name="userCache" ref="userCache"></property>
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="modify*">PROPAGATION_REQUIRED</prop>
<prop key="auth*">PROPAGATION_REQUIRED</prop>
<prop key="init*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="refresh*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
-->
    <!-- ========================= 决策管理器 ========================= -->
    <bean id="accessDecisionManager"
    class="org.acegisecurity.vote.AffirmativeBased">
    <property name="decisionVoters">
    <list>
    <ref bean="roleVoter" />
    </list>
    </property>
    <!-- 是否全部弃权就通过 -->
    <property name="allowIfAllAbstainDecisions" value="false" />
    </bean>

    <!--
         必须是以rolePrefix设定的value开头的才会进行投票,否则为弃权
     -->
  <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter">
    <property name="rolePrefix"><value>ROLE_</value></property>
  </bean>
</beans>
分享到:
评论

相关推荐

    acegi-security-tiger-1.0.0-RC2.jar.zip

    这个"acegi-security-tiger-1.0.0-RC2.jar.zip"压缩包包含的是Acegi Security的一个早期版本——1.0.0 Release Candidate 2(RC2),专门针对Tiger(Java SE 5.0)版本的Java开发环境。 Acegi Security的主要功能...

    acegisecurity内所有jar包

    包含acegi-security-1.0.7.jar,acegi-security-1.0.7-sources.jar,acegi-security-cas-1.0.7.jar,acegi-security-cas-1.0.7-sources.jar,acegi-security-catalina-1.0.7.jar,acegi-security-catalina-1.0.7-...

    applicationContext-security.xml

    用于配置acegi的xml文件,把这个文件加入项目中,然后建立里面的数据库,引入jar包就可以实现权限的管理

    acegi-security-cas-1.0.7.jar

    Acegi是一个专门为SpringFramework提供安全机制的项目,全称为Acegi Security System for Spring.

    acegi-security 1.0.2

    acegi-security 1.0.2.jar

    acegi-security-1.0.0-RC2.jar

    acegi-security-1.0.0-RC2.jar

    acegi-security-0.8.1.1.jar.zip

    总的来说,"acegi-security-0.8.1.1.jar.zip"是一个关键的安全组件,对于那些需要在Spring环境下实现复杂安全策略的开发者来说,它提供了强大的工具和基础。尽管Acegi Security已经被Spring Security替代,但对于...

    acegi-security-jetty-0.8.3.jar.zip

    "acegi-security-jetty-0.8.3.jar.zip"文件是Acegi Security与Jetty服务器特定版本(0.8.3)的集成包,它包含了Acegi Security的jar文件以及相关的许可证信息。 Acegi Security的主要功能包括: 1. **身份验证**:...

    acegi-security-0.8.3.jar.zip

    `acegi-security-0.8.3.jar.zip` 是这个框架的一个特定版本的压缩包,包含了版本号为0.8.3的Acegi Security JAR文件。 在Java世界里,JAR(Java Archive)文件是一种用于打包Java类和资源的标准格式,便于分发和...

    acegi-security-1.0.4.jar

    acegi-security-1.0.4.jar

    acegi-security-1.0.7.jar.zip

    这个"acegi-security-1.0.7.jar.zip"文件包含的是Acegi Security 1.0.7版本的库,它是一个压缩的Java Archive(JAR)文件,专门设计用于增强Spring框架的安全功能。 Acegi Security的核心功能包括身份验证、授权和...

    acegi-security-1.0.5.zip

    Acegi Security是一个在Java开发领域广泛应用的开源安全框架,它主要为基于J2EE的企业级应用程序提供了全面且强大的安全解决方案。这个框架的核心在于其高度的灵活性和可扩展性,允许开发者根据具体需求定制安全策略...

    acegi-security-resin-0.8.3.jar.zip

    压缩包中的"acegi-security-resin-0.8.3.jar"是主要的库文件,包含了Acegi Security与Resin的集成代码,开发者需要将其部署到Resin的应用服务器环境中,以启用安全功能。而"springframework-license.txt"文件则是...

    acegi-security-1.0.4.jar.zip

    `acegi-security--license.txt` 文件通常包含软件的许可协议信息,对于Acegi Security 1.0.4来说,这可能是Apache License Version 2.0,这是一个广泛使用的开源软件许可证,允许自由地使用、修改和分发软件,但要求...

    acegi-security-0.6.1.jar.zip

    这个"acegi-security-0.6.1.jar.zip"文件包含的是Acegi Security 0.6.1版本的库,以及相关的许可证信息。 Acegi Security的核心功能在于提供了一套全面的身份验证和授权机制,它允许开发者为Web应用程序添加细粒度...

    acegi-security-catalina-1.0.7.jar.zip

    这个"acegi-security-catalina-1.0.7.jar.zip"文件包含的是Acegi Security的一个特定版本,即1.0.7,针对Tomcat(Catalina)容器的实现。在Java Web开发中,Tomcat作为Servlet容器,是部署和运行Java Web应用程序的...

    acegi-security-1.0.3.jar.zip

    这个"acegi-security-1.0.3.jar.zip"文件是一个包含Acegi Security 1.0.3版本的压缩包,其中的核心组件是"acegi-security-1.0.3.jar"。这个JAR文件包含了框架的所有类和资源,允许开发者集成到他们的应用中以实现...

    acegi-security-resin-0.8.1.1.jar.zip

    这两个文件分别代表了Acegi Security针对Resin应用服务器的一个特定版本的实现和Spring框架的许可协议。 Acegi Security: Acegi Security系统是Spring社区的一个项目,专为Java企业级应用程序设计,提供了一套全面...

    acegi-security-0.8.2.jar.zip

    这个“acegi-security-0.8.2.jar.zip”文件包含的是Acegi Security 0.8.2版本的JAR包以及相关的许可证信息。 Acegi Security的核心功能是为Java应用程序提供身份验证(Authentication)和授权(Authorization)服务...

    acegi-security-1.0.4.jar的源码

    在分析`acegi-security-1.0.4.jar`的源码之前,我们需要了解Acegi Security的基本概念和架构。 Acegi Security的核心目标是提供一个灵活、可扩展的安全框架,允许开发者对用户认证、授权进行细粒度控制。它基于...

Global site tag (gtag.js) - Google Analytics