<!-- if you
wish to use channel security, add "channelProcessingFilter," in
front of
"httpSessionContextIntegrationFilter" in the list below
--> <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,basicProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor,switchUserProcessingFilter </value> </property> </bean> 首先,这个是一个过滤器,我们想让它生效,就必须在web.xml中声明<filter>和<filter-mapping>来配置它们: <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> 如果我们这个过滤器必须引入一个Bean来完成它的工作。那么,由于web.xml并没有spring的Ioc功能,所以我们不能完成它(抛去在Servlet过滤器中编写Spring特定代码不说)。Acegi通过FilterToBeanProxy提供了更好的解决方法。其实上面的示例已经是一个FilterToBeanProxy过滤器了。那么我们只需要在Spring配置文件中配置真正的过滤器就可以了,因为FilterToBeanProxy将自己的工作委托给了Spring应用上下文中的Bean来完成。你可能不知道<filter-mapping>的作用,它是指,将过滤器与一个URL模式相关联,所有的请求都将被该过滤器处理。(/*是所有Acegi过滤器推荐的URL模式,这样做是说Acegi应该拦截所有的请求,并由其依赖的安全管理器来决定是否和如何保护请求。) httpSessionContextIntegrationFilter:每次request前
HttpSessionContextIntegrationFilter从Session中获取Authentication对象,在request完后,
又把Authentication对象保存到Session中供下次request使用,此filter必须其他Acegi
filter前使用,使之能跨越多个请求。这些就犹如在web.xml声明一系列的过滤器,不过当把他们都声明在spring中就可以享受Spring给我们带来的方便了。 a. logoutFilter:用户的注销 b. authenticationProcessingFilter:处理登陆请求 c. basicProcessingFilter: d. securityContextHolderAwareRequestFilter: e. rememberMeProcessingFilter: f. anonymousProcessingFilter: g. exceptionTranslationFilter:异常转换过滤器 h. filterInvocationInterceptor:在访问前进行权限检查 i. switchUserProcessingFilter: