1, Security Filter Chain
Spring Security完全基于标准的servlet filter技术,没有使用任何servlets或者其他基于servlet的框架,Spring Security和任何特定的web技术没有很强的关联。Spring Security处理HttpServletRequest
和HttpServletResponse
,并且并不关心这些请求是来自于浏览器还是web服务客户端,HttpInvoker
或者是AJAX请求。
1.1 DelegatingFilterProxy
在Spring Security中,filter类也是在应用上下文中定义的Spring bean,因此它能够利用Spring丰富的DI相关接口。Spring的DelegatingFilterProxy
提供了web.xml
和应用上下文之间的联系,将servlet中的filter和Spring中的bean关联起来。
当使用DelegatingFilterProxy
时,需要在web.xml
中定义一个filter。具体内容如下:
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
DelegatingFilterProxy
所做的工作是通过从Spring应用上下文中的到的一个bean来分配Filter的方法。这样能使得这个bean获得Spring web应用上下文的声明周期支持并且能够灵活地配置。这个bean必须实现javax.servlet.Filter
并且必须和filter-name
标签中的元素名称相同。
1.2 FilterChainProxy
未完待续