乐途乐途
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
  • 学习路径
  • 第1章 Spring Security 基础

    • 本章定位
    • Spring Security 是什么
    • DelegatingFilterProxy
    • 安全过滤器链
    • SecurityFilterChain
    • 过滤器执行顺序
  • 第2章 认证

    • 本章定位
    • Authentication
    • 认证流程
    • AuthenticationManager
    • ProviderManager
    • DaoAuthenticationProvider
    • UserDetails
    • UserDetailsService
    • PasswordEncoder
    • BCryptPasswordEncoder
    • DelegatingPasswordEncoder
    • 表单登录
    • SecurityContext
    • SecurityContextHolder
    • UsernamePasswordAuthenticationToken
  • 第3章 授权

    • 本章定位
    • 授权模型
    • GrantedAuthority
    • AccessDecisionManager
    • AccessDecisionVoter
    • URL 级别授权
    • 方法级别安全
    • @PreAuthorize
    • @PostAuthorize
    • @PreFilter
    • @PostFilter
    • @Secured
    • RoleHierarchy
  • 第4章 过滤器链

    • 本章定位
    • FilterChainProxy
    • SecurityContextHolderFilter
    • LogoutFilter
    • BasicAuthenticationFilter
    • CsrfFilter
    • CorsFilter
    • HeaderWriterFilter
    • AnonymousAuthenticationFilter
    • RequestCacheAwareFilter
    • ExceptionTranslationFilter
    • FilterSecurityInterceptor
  • 第5章 会话管理

    • 本章定位
    • 会话管理
    • SessionFixation
    • 会话并发控制
    • SessionCreationPolicy
    • RememberMe
  • 第6章 JWT

    • 本章定位
    • JWT
    • JwtDecoder
    • JWT 认证
    • JwtAuthenticationConverter
  • 第7章 OAuth2

    • 本章定位
    • OAuth2 基础
    • OAuth2 Client
    • OAuth2 Resource Server
    • 第三方登录配置
  • 第8章 攻击防护

    • 本章定位
    • CSRF 跨站请求伪造防护
    • CORS 跨域防护
    • Clickjacking 点击劫持防护
    • 安全响应头
    • Session Fixation 会话固定防护
  • 第9章 测试

    • 本章定位
    • 安全测试
    • @WithMockUser
    • 最佳实践

"白歌打开浏览器开发者工具,指着 Network 面板里一串过滤器说:'每个请求都要经过这12个过滤器,它们不是乱排的,顺序错了安全就崩了。'这一章,你将逐个拆解 Spring Security 过滤器链中的核心过滤器,看清请求在到达 Controller 之前经历了什么。"

章节导读:过滤器链与核心机制

本章定位

本章解决的核心问题:Spring Security 过滤器链由哪些具体过滤器组成、它们的固定执行顺序是什么、以及每个过滤器在认证/授权/攻击防护中的职责。 本章是前两章(认证/授权)的底层实现基础。

学习路线图

学习顺序说明:从 FilterChainProxy(多链路由中心)开始 → 掌握 SecurityContextHolderFilter(上下文加载与保存)→ 理解 CsrfFilter(跨站请求伪造防护)→ 掌握 LogoutFilter(登出处理)和 BasicAuthenticationFilter(HTTP Basic 认证)→ 理解 RequestCacheAwareFilter(请求缓存恢复)和 AnonymousAuthenticationFilter(匿名身份填充)→ 深入 ExceptionTranslationFilter(异常统一转换)和 HeaderWriterFilter(安全响应头写入)→ 最后掌握 CorsFilter(跨域处理)和 FilterSecurityInterceptor(最终授权拦截)。

文件关系说明

文件一句话角色
FilterChainProxy.md多链路由中心:管理多个 SecurityFilterChain,按请求路径匹配分发。
SecurityContextHolderFilter.md上下文加载与保存:从 Session 加载 SecurityContext 到线程,请求结束后写回。
CsrfFilter.md跨站请求伪造防护:生成/校验 CSRF Token,保护非幂等请求。
LogoutFilter.md登出处理:匹配 /logout 路径,执行登出逻辑并清理上下文。
BasicAuthenticationFilter.mdHTTP Basic 认证:解析 Authorization 头的 Basic 凭据,完成无状态认证。
RequestCacheAwareFilter.md请求缓存恢复:认证成功后重定向到之前被拦截的原始请求。
AnonymousAuthenticationFilter.md匿名身份填充:未认证用户自动赋予匿名身份,避免空指针。
ExceptionTranslationFilter.md异常统一转换:捕获认证/授权异常,引导登录或返回 403。
HeaderWriterFilter.md安全响应头写入:自动添加 X-Frame-Options、XSS-Protection、HSTS 等头。
CorsFilter.md跨域处理:处理跨域预检请求,控制 CORS 策略。
FilterSecurityInterceptor.md最终授权拦截:过滤器链的最后一个关卡,执行 URL 级授权决策。

知识图谱

核心逻辑:Spring Security 的过滤器链是一个流水线工厂:FilterChainProxy 根据请求路径选择对应的安全链 → SecurityContextHolderFilter 从 Session 加载用户上下文 → 认证过滤器(Basic/表单)确认身份 → 匿名过滤器为未认证用户填充默认身份 → CsrfFilter 和 CorsFilter 执行攻击防护 → HeaderWriterFilter 写入安全响应头 → ExceptionTranslationFilter 捕获异常并统一处理 → 最后 FilterSecurityInterceptor 执行授权决策,决定请求能否到达 Controller。顺序严格固定,任何一个过滤器的错位都可能导致安全漏洞。

与上下章的衔接

上一章回顾:你掌握了 URL 级、方法级、实例级三层授权模型,以及 AccessDecisionManager 的决策机制。本章将揭示这些授权决策在过滤器链中的实际执行位置——FilterSecurityInterceptor 是 URL 级授权的最后一道关卡。

下一章预告:本章的过滤器链中,SecurityContextHolderFilter 通过 Session 加载上下文,这是"有状态"认证。但在分布式和微服务架构中,Session 不再是最佳选择。下一章「会话管理与记住我」将深入 Session 的创建策略、并发控制和"记住我"机制,以及它们与过滤器链的协作关系。

下一页
FilterChainProxy