Acegi配置总结
1、 在web.xml中配置contextConfigLocation,并且配置acegi filter chain即过滤器链
例如:
<!
—配置过滤器链--
>
< filter >
< filter-name > Acegi Filter Chain Proxy </ filter-name >
< filter-class > org.acegisecurity.util.FilterToBeanProxy </ filter-class >
< init-param >
< param-name > targetClass </ param-name >
< param-value > org.acegisecurity.util.FilterChainProxy </ param-value >
</ init-param >
</ filter >
<! —配置过滤器链过滤范围-- >
< filter-mapping >
< filter-name > Acegi Filter Chain Proxy </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
<!-- 将事物提交给web applicationContext -->
< listener >
< listener-class > org.acegisecurity.ui.session.HttpSessionEventPublisher </ listener-class >
</ listener >
< filter >
< filter-name > Acegi Filter Chain Proxy </ filter-name >
< filter-class > org.acegisecurity.util.FilterToBeanProxy </ filter-class >
< init-param >
< param-name > targetClass </ param-name >
< param-value > org.acegisecurity.util.FilterChainProxy </ param-value >
</ init-param >
</ filter >
<! —配置过滤器链过滤范围-- >
< filter-mapping >
< filter-name > Acegi Filter Chain Proxy </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
<!-- 将事物提交给web applicationContext -->
< listener >
< listener-class > org.acegisecurity.ui.session.HttpSessionEventPublisher </ listener-class >
</ listener >
2、在applicationContext-acegi.xml中配置
1-配置过滤器链
<
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,basicProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,switchUserProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
]]> </ value >
</ property >
</ bean >
<!-- 配置过滤器链的内容及其执行顺序 -->
< property name ="filterInvocationDefinitionSource" >
< value > <![CDATA[
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,switchUserProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
]]> </ value >
</ property >
</ bean >
另外,从某论坛上看到,如果配置文件中出现<>""等字符时除了可以用html符号外还可以用<![CDATA[ ]]> 来包含配置信息
2-
<!--
最先要配置的过滤器,用于提供安全上下文实例
-->
< bean id ="httpSessionContextIntegrationFilter"
class ="org.acegisecurity.context.HttpSessionContextIntegrationFilter" />
< bean id ="httpSessionContextIntegrationFilter"
class ="org.acegisecurity.context.HttpSessionContextIntegrationFilter" />
3-
<!--
登出过滤器
-->
< bean id ="logoutFilter"
class ="org.acegisecurity.ui.logout.LogoutFilter" >
< constructor-arg value ="/logoutSuccess.jsp" />
< constructor-arg >
< list >
< bean
class ="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" />
</ list >
</ constructor-arg >
</ bean >
< bean id ="logoutFilter"
class ="org.acegisecurity.ui.logout.LogoutFilter" >
< constructor-arg value ="/logoutSuccess.jsp" />
< constructor-arg >
< list >
< bean
class ="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" />
</ list >
</ constructor-arg >
</ bean >
4-
<!--
登陆验证过滤器
-->
< 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 ="/index.jsp" />
< property name ="filterProcessesUrl"
value ="/j_acegi_security_check" />
</ 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 ="/index.jsp" />
< property name ="filterProcessesUrl"
value ="/j_acegi_security_check" />
</ bean >
5-
<!--
配置验证管理器
-->
< bean id ="authenticationManager" class ="org.acegisecurity.providers.ProviderManager" >
< property name ="providers" > <!-- 提供者属性 -->
< list > <!-- 配置其依赖的DAO -->
< ref local ="daoAuthenticationProvider" /> <!-- 基于数据库提供验证 -->
< ref local ="PasswordDaoAuthenticationProvider" /> <!-- 基于数据库提供验证,但让底层的数据源完成实际的身份验证。 -->
< ref local ="anonymousAuthenticationProvider" /> <!-- 匿名验证 -->
< ref local ="rememberMeAuthenticationProvider" /> <!-- 再次登陆时从缓存中验证 -->
</ list >
</ property >
</ bean >
< bean id ="authenticationManager" class ="org.acegisecurity.providers.ProviderManager" >
< property name ="providers" > <!-- 提供者属性 -->
< list > <!-- 配置其依赖的DAO -->
< ref local ="daoAuthenticationProvider" /> <!-- 基于数据库提供验证 -->
< ref local ="PasswordDaoAuthenticationProvider" /> <!-- 基于数据库提供验证,但让底层的数据源完成实际的身份验证。 -->
< ref local ="anonymousAuthenticationProvider" /> <!-- 匿名验证 -->
< ref local ="rememberMeAuthenticationProvider" /> <!-- 再次登陆时从缓存中验证 -->
</ list >
</ property >
</ bean >
6-
<!--
数据提供者
-->
< bean id ="daoAuthenticationProvider" class ="org.acegisecurity.providers.dao.DaoAuthenticationProvider" >
< property name ="userDetailsService" >< ref local ="jdbcDaoImpl" /></ property >
< property name ="userCache" >< ref local ="userCache" /></ property > <!-- 用户缓存,可选 -->
< property name ="passwordEncoder" >< ref local ="passwordEncoder" /></ property > <!-- 密码加密,可选 -->
</ bean >
< bean id ="daoAuthenticationProvider" class ="org.acegisecurity.providers.dao.DaoAuthenticationProvider" >
< property name ="userDetailsService" >< ref local ="jdbcDaoImpl" /></ property >
< property name ="userCache" >< ref local ="userCache" /></ property > <!-- 用户缓存,可选 -->
< property name ="passwordEncoder" >< ref local ="passwordEncoder" /></ property > <!-- 密码加密,可选 -->
</ bean >
7
<!--
配置用户缓存,可选
-->
< bean id ="cacheManager" class ="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" />
< bean id ="userCacheBackend" class ="org.springframework.cache.ehcache.EhCacheFactoryBean" >
< property name ="cacheManager" >
< ref local ="cacheManager" />
</ property >
< property name ="cacheName" >
< value > userCache </ value >
</ property >
</ bean >
< bean id ="userCache" class ="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache" >
< property name ="cache" >< ref local ="userCacheBackend" /></ property >
</ bean >
< bean id ="cacheManager" class ="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" />
< bean id ="userCacheBackend" class ="org.springframework.cache.ehcache.EhCacheFactoryBean" >
< property name ="cacheManager" >
< ref local ="cacheManager" />
</ property >
< property name ="cacheName" >
< value > userCache </ value >
</ property >
</ bean >
< bean id ="userCache" class ="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache" >
< property name ="cache" >< ref local ="userCacheBackend" /></ property >
</ bean >
8-
<
--
密码加密,可选,共3种方式--
>
< bean id ="passwordEncoder" class ="org.acegisecurity.providers.encoding.PlaintextPasswordEncoder" /> <!-- 不加密,默认 -->
< bean id ="passwordEncoder" class ="org.acegisecurity.providers.encoding.Md5PasswordEncoder" /> <!-- MD5加密 -->
< bean id ="passwordEncoder" class ="org.acegisecurity.providers.encoding.SHAPasswordEncoder" />< --SHA 加密-- >
< bean id ="passwordEncoder" class ="org.acegisecurity.providers.encoding.PlaintextPasswordEncoder" /> <!-- 不加密,默认 -->
< bean id ="passwordEncoder" class ="org.acegisecurity.providers.encoding.Md5PasswordEncoder" /> <!-- MD5加密 -->
< bean id ="passwordEncoder" class ="org.acegisecurity.providers.encoding.SHAPasswordEncoder" />< --SHA 加密-- >
9-
<!--
配置jdbcDaoImpl
-->
< bean id ="jdbcDaoImpl" class ="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl" >
< property name ="dataSource" >< ref bean ="dataSource" /></ property >
</ bean >
< bean id ="jdbcDaoImpl" class ="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl" >
< property name ="dataSource" >< ref bean ="dataSource" /></ property >
</ bean >
10-配置DateSource
DateSource自己会配置吧~~那啥,我就不说了
本贴个人原创,如有不正确之处,请指正......