Spring Security结构总览
当初始化Spring Security时,会创建一个类型为org.springframework.security.web.FilterChainProxy,名称为springSecurityFilterChain过滤器,这个过滤器实现了javax.servlet.Filter接口,外部请求系统资源时会经过此过滤器。
Spring Security安全管理的实现主要是由过滤器链中一系列过滤器相互配合完成,下面对过滤器链中主要的几个过滤器及其作用分别进行说明。
SecurityContextPersistenceFilter:是整个拦截过程的入口和出口,也就是第一个和最后一个拦截器。
UsernamePasswordAuthenticationFilter:用于处理来自表单提交的认证,提交的表单必须提供对应的用户名和密码。
FilterSecurityInterceptor:用于保护Web资源,获取所配置资源访问的授权信息。
CsrfFilter:Spring Security会对所有Post请求验证是否包含系统生成的csrf的token信息,如果不包含,则报错,起到防止csrf攻击的效果。
ExceptionTranslationFilter:能够捕获来自FilterChain所有的异常,并进行处理。 DefaultLoginPageGeneratingFilter:如果没有在配置文件中指定认证页面,则由该过滤器生成一个默认认证页面。