在企业中,为了实现web项目的安全性,整合acegi是一个不错的选择。
spring提供了两种加载DI容器的方法:ContextLoaderServlet和ContextLoaderListener。
一旦采用contextloaderservlet装载springDI容器,filtertobeanproxy和contextloaderservlet的实例化顺序可能会出现不一致。此时,filtertobeanproxy可能试图在congtextloaderservlet前完成初始化工作,然而它需要用到springDI容器,而这个DI容器又是由contextloaderservlet加载完成的。因此,我们需要启用filtertobeanproxy的延迟初始化策略,从而保证它能够正确操控到ID容器。
<filter>
<filter-name>securityFilter</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>
<init-param>
<param-name>init</param-name>
<param-value>lazy</param-value>
</init-param>
</filter>