spring security 在web应用中是基于filter的;
Filter:
spring security 维护了一个filter chain,chain中的每一个filter都具有特定的责任,并根据所需的服务在配置中添加。filter的顺序很重要,因为他们之间存在依赖关系。spring security中有如下filter(按顺序的):
ChannelProcessingFilter,因为它可能需要重定向到不同的协议
SecurityContextPersistenceFilter,可以在web请求开头的SecurityContextHolder中设置SecurityContext,并且SecurityContext的任何更改都可以复制到HttpSession当web请求结束时(准备好与下一个web请求一起使用)
ConcurrentSessionFilter,
身份验证处理-UsernamePasswordAuthenticationFilter,CasAuthenticationFilter,BasicAuthenticationFilter等。以便SecurityContextHolder可以修改为包含有效的Authentication请求令牌
SecurityContextHolderAwareRequestFilter
JaasApiIntegrationFilter
RememberMeAuthenticationFilter,记住我服务处理
AnonymousAuthenticationFilter,匿名身份处理,更新SecurityContextHolder
ExceptionTranslationFilter,获任何Spring Security异常,以便可以返回HTTP错误响应或启动适当的AuthenticationEntryPoint
FilterSecurityInterceptor,用于保护web URI并在访问被拒绝时引发异常