Spring Security 6 常见Filter详解

编程 > Java > Spring (177) 2026-01-14 12:57:44

核心安全过滤器顺序和作用表

以下是 Spring Security 6 中主要过滤器的详细表格:

顺序 过滤器名称 类名 作用 是否默认启用 配置方式
-150 WebAsyncManagerIntegrationFilter WebAsyncManagerIntegrationFilter 集成异步请求处理与SecurityContext 自动
-100 SecurityContextHolderFilter SecurityContextHolderFilter 安全上下文持久化 (替代旧版SecurityContextPersistenceFilter) 自动
-90 HeaderWriterFilter HeaderWriterFilter 添加安全HTTP头 自动
-80 CorsFilter CorsFilter 处理跨域请求 可选 .cors()
-70 CsrfFilter CsrfFilter 防止CSRF攻击 是 (REST API建议禁用) .csrf()
-60 LogoutFilter LogoutFilter 处理用户登出 .logout()
-55 OAuth2AuthorizationRequestRedirectFilter OAuth2AuthorizationRequestRedirectFilter OAuth2授权重定向 可选 .oauth2Login()
-50 UsernamePasswordAuthenticationFilter UsernamePasswordAuthenticationFilter 表单登录认证 可选 .formLogin()
-45 DefaultLoginPageGeneratingFilter DefaultLoginPageGeneratingFilter 生成默认登录页 可选 自动(当使用表单登录且未指定登录页时)
-40 DefaultLogoutPageGeneratingFilter DefaultLogoutPageGeneratingFilter 生成默认登出页 可选 自动
-35 BearerTokenAuthenticationFilter BearerTokenAuthenticationFilter JWT/Bearer Token认证 可选 .oauth2ResourceServer()
-30 BasicAuthenticationFilter BasicAuthenticationFilter HTTP Basic认证 可选 .httpBasic()
-25 RequestCacheAwareFilter RequestCacheAwareFilter 恢复缓存的请求 自动
-20 SecurityContextHolderAwareRequestFilter SecurityContextHolderAwareRequestFilter 包装HttpServletRequest添加安全方法 自动
-15 AnonymousAuthenticationFilter AnonymousAuthenticationFilter 处理匿名用户 自动
-10 SessionManagementFilter SessionManagementFilter 会话管理 .sessionManagement()
-5 ExceptionTranslationFilter ExceptionTranslationFilter 异常转换 自动
0 AuthorizationFilter AuthorizationFilter 授权决策 (替代FilterSecurityInterceptor) .authorizeHttpRequests()

OAuth2/JWT 相关过滤器

顺序 过滤器名称 类名 作用 是否默认启用 配置方式
-65 Saml2WebSsoAuthenticationRequestFilter Saml2WebSsoAuthenticationRequestFilter SAML2认证请求 可选 .saml2Login()
-52 OAuth2LoginAuthenticationFilter OAuth2LoginAuthenticationFilter OAuth2登录回调处理 可选 .oauth2Login()
-48 Saml2WebSsoAuthenticationFilter Saml2WebSsoAuthenticationFilter SAML2认证响应处理 可选 .saml2Login()

其他常用过滤器

顺序 过滤器名称 类名 作用 是否默认启用 配置方式
-85 X509AuthenticationFilter X509AuthenticationFilter X.509客户端证书认证 可选 .x509()
-75 LogoutHandler LogoutHandler 登出处理器 .logout()
-57 J2eePreAuthenticatedProcessingFilter J2eePreAuthenticatedProcessingFilter J2EE预认证处理 可选 .jee()
-42 RequestHeaderAuthenticationFilter RequestHeaderAuthenticationFilter 请求头认证 可选 自定义

 

过滤器配置示例对应表

1. REST API (JWT 认证) 配置

配置: http.csrf().disable() + .oauth2ResourceServer().jwt()
会启用的主要过滤器:
1. SecurityContextHolderFilter (-100)
2. HeaderWriterFilter (-90)
3. CorsFilter (-80) [如果配置了cors]
4. LogoutFilter (-60)
5. BearerTokenAuthenticationFilter (-35) [JWT认证]
6. RequestCacheAwareFilter (-25)
7. SecurityContextHolderAwareRequestFilter (-20)
8. AnonymousAuthenticationFilter (-15)
9. SessionManagementFilter (-10)
10. ExceptionTranslationFilter (-5)
11. AuthorizationFilter (0) [授权检查]

2. 传统Web应用 (表单登录) 配置

 
配置: .formLogin() + .logout() + .csrf()
会启用的主要过滤器:
1. SecurityContextHolderFilter (-100)
2. HeaderWriterFilter (-90)
3. CorsFilter (-80) [如果配置了cors]
4. CsrfFilter (-70)
5. LogoutFilter (-60)
6. UsernamePasswordAuthenticationFilter (-50) [表单认证]
7. DefaultLoginPageGeneratingFilter (-45) [如果未指定登录页]
8. DefaultLogoutPageGeneratingFilter (-40)
9. RequestCacheAwareFilter (-25)
10. SecurityContextHolderAwareRequestFilter (-20)
11. AnonymousAuthenticationFilter (-15)
12. SessionManagementFilter (-10)
13. ExceptionTranslationFilter (-5)
14. AuthorizationFilter (0) [授权检查]

3. OAuth2 登录配置

配置: .oauth2Login() + .csrf()
会启用的主要过滤器:
1. SecurityContextHolderFilter (-100)
2. HeaderWriterFilter (-90)
3. CorsFilter (-80) [如果配置了cors]
4. CsrfFilter (-70)
5. LogoutFilter (-60)
6. OAuth2AuthorizationRequestRedirectFilter (-55) [OAuth2重定向]
7. OAuth2LoginAuthenticationFilter (-52) [OAuth2回调处理]
8. RequestCacheAwareFilter (-25)
9. SecurityContextHolderAwareRequestFilter (-20)
10. AnonymousAuthenticationFilter (-15)
11. SessionManagementFilter (-10)
12. ExceptionTranslationFilter (-5)
13. AuthorizationFilter (0) [授权检查]

 

过滤器执行流程表

阶段 过滤器类型 关键功能
预处理 SecurityContextHolderFilter 加载SecurityContext
  HeaderWriterFilter 添加安全响应头
认证处理 CsrfFilter CSRF保护
  LogoutFilter 处理登出
  Authentication Filters 各种认证方式处理
上下文设置 RequestCacheAwareFilter 恢复缓存请求
  SecurityContextHolderAwareRequestFilter 包装请求
  AnonymousAuthenticationFilter 设置匿名身份
会话管理 SessionManagementFilter 会话控制
异常处理 ExceptionTranslationFilter 安全异常转换
授权检查 AuthorizationFilter 访问控制决策

 

重要变化 (Spring Security 5 → 6)

过滤器 Spring Security 5 Spring Security 6 变化说明
授权过滤器 FilterSecurityInterceptor AuthorizationFilter 新API,更简洁
安全上下文 SecurityContextPersistenceFilter SecurityContextHolderFilter 更清晰的职责分离
CSRF配置 csrf().disable() csrf(csrf -> csrf.disable()) Lambda DSL配置
授权配置 .antMatchers() .requestMatchers() 新的匹配器API

 

自定义过滤器位置参考表

插入位置 推荐使用的方法 示例场景
在CSRF之前 .addFilterBefore() 自定义Token验证过滤器
在认证之后 .addFilterAfter() 认证成功后的日志记录
在授权之前 .addFilterBefore(AuthorizationFilter) 动态权限检查
替代默认过滤器 .addFilterAt() 自定义登录处理器

 

调试信息获取

方法 作用 示例
SecurityFilterChain Bean 查看配置的过滤器链 @Autowired SecurityFilterChain
/actuator/filters Actuator端点查看过滤器 需要开启Actuator
日志级别 DEBUG 查看过滤器执行过程 logging.level.org.springframework.security=DEBUG

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
环境JDK 17Spring Boot 3.2.1-3.2.3Spring Security 6.2.1-6.3.1Spring Security 权限/角色常
前言使用Spring Boot 3 Security 6.2 JWT 完成无状态的REST接口认证和授权管理。环境JDK 17Spring Boot 3.3.2
核心安全过滤器顺序和作用表以下是 Spring Security 6 中主要过滤器的详细表格:顺序过滤器名称类名作用是否默认启用配置方式-150WebAsync
spring boot 2.0 security 5.0 整合,实现自定义表单登录。spring boot 2.0框架使用。
spring security常用注解@Secured、@PreAuthorize 、@PostAuthorize说明,Java编程,spring security
spring boot 入门之security oauth2 jwt完美整合例子,Java编程中spring boot框架+spring security框架+spring security o...
Spring Security 配置多个Authentication Providers认证器
1.概述本文继续使用spring boot 和Spring Security系列进行注册,并着重于如何正确实现角色和权限
Java编程中spring security4是一个spring框架项目的一个安全方面的项目。主要用于用户认证,授权,角色认证
解决spring security 整合到spring boot中,UserDetailsService接口的loadUserByUsername方法参数username输入为空问题。一  检查...
从Spring 6和Spring Boot 3开始,Spring framework支持将远程HTTP服务代理为带有HTTP交换注解方法的Java接口。类似的库,如OpenFeign和Retro...
从Spring 6和Spring Boot 3开始,Spring框架支持“HTTP API的问题详细信息”规范RFC 7807。本Spring Boot 教程将详细指导您完成这一新增强。1.问题...
从Spring 6和Spring Boot 3开始,与OpenFeign和Retrofit等其他声明式客户端类似,Spring框架支持以Java接口的形式创建RSocket服务,并为RSocke...
引言在这篇文章中,我们将讨论如何使用Spring Boot Security OAuth2保护REST API