1. DelegatingFilterProxy
一个标准的Servlet Filter代理, 可集成Spring容器中的bean(实现Filter接口). 其工作机制伪代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
// 从Spring 容器中查找指定名称的Filter的bean.
// 然后使用这个bean
Filter delegate = getFilterBean(someFilterBeanName);
delegate.doFilter(request, response);
}
2. FilterChainProxy
它是通过DelegatingFilterProxy
被注入到servlet容器中. 负责选择合适的SecurityFilterChain
来处理请求.
2.1. 配置
它包含一个SecurityFilterChain
列表. 大多数应用只需要一个SecurityFilterChain
. 如果配置有多个, 只有匹配的第一个SecurityFilterChain
将被调用。
2.2. 请求防火墙
它包含一个HttpFirewall
实例. 用于验证所有的请求.
2.3. FilterChainProxy类图
3. SecurityFilterChain
决定当前请求要调用哪些Security Filter. 通过RequestMatcher
接口来匹配HttpServletRequest
。其标准实现为DefaultSecurityFilterChain
.