DelegatingFilterProxy是一个特殊的Servlet Filter,它本身所做工作并不多,只是将工作委托给一个javax.servlet.Filter实现类。
配置方式一:在传统的web.xml中配置
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
**这里最重要的是<filter-name>springSecurityFilterChain</filter-name>,因为我们会将Spring Security配置在web安全性中,
这里会有一个名为springSecurityFilterChain的filter bean,DelegatingFilterProxy会将过滤逻辑委托给它。
配置方式二:借助WebApplicationInitializer以Java的方式来配置DelegatingFilterProxy
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer {
}
AbstractSecurityWebApplicationInitializer实现了WebApplicationInitializer,因此Spring会发现并使用它在Web容器中注册DelegatingFilterProxy。
可以重载它的appendFilters()或insertFilters()方法来注册自己选择的Filter。
如果要注册DetagatingFilterProxy,则不需重载任何方法。
不管是xml还是java配置的DelegatingFilterProxy,都会拦截发往应用中的请求,并将其委托给ID为springSecurityFilterChain的bean.
<pre name="code" class="java">springSecurityFilterChain也被成为FilterChainProxy,它可以链接任意多个其他的Filter来提供不同的安全特性。
但这些对于SpringSecurity用户来说都是透明的。