Spring Security基本框架之过滤器

本文内容来自王松老师的《深入浅出Spring Security》,自己在学习的时候为了加深理解顺手抄录的,有时候还会写一些自己的想法。

在Spring Security中,认证和授权等功能都是基于过滤器来完成的。在引入Spring Security依赖之后开发者不做任何配置时Spring Security会为我们加载一部分过滤器:

  • SecurityContextPersistenceFilter:在请求处理之前将安全信息加载到SecurityContextHolder中方便后续使用。请求结束后,在擦除SecurityContextHolder中的信息。
  • CsrfFilter:处理CSRF攻击
  • LogoutFilter:处理注销登录
  • UserNamePasswordAuthenticationFilter:处理表单登录
  • DefaultLoginPageGeneratingFilter:配置默认登录页面
  • DefaultLogoutPageGeneratingFilter:配置默认注销页面
  • BasicAuthenticationFilter:处理HttpBasic登录
  • 还有很多……..

开发者所见到的Spring Security提供的功能都是通过过滤器来实现的,这些过滤器按照既定的优先级排列,最终形成一个过滤器链。开发者也可以自定义过滤器,并通过@Order注解去调整自定义过滤器链中的位置。需要注意的是,默认过滤器并不是直接放在原生Web项目中的原生过滤器链中,而是通过一个FilterChainProxy嵌入到Web原生项目的原生过滤器链中:

Spring Security基本框架之过滤器

在Spring Security中这样的过滤器链不仅仅只有一个,可能会存在有多个。如下图,当存在多个过滤器链时需要指定他们的优先级,当请求达到之后会从FileterChainProxy中进行分发,先和那个过滤器链匹配上就先用哪个过滤器链进行处理。等系统存在多个不同认证体系时,那么使用多个过滤器链就非常有效。

Spring Security基本框架之过滤器

FilterChainProxy作为一个顶层的管理者,将统一管理Security Filter。FilterChainProxy本身将通过Spring框架提供的DelegatingFilterProxy整合到原生过滤器链中,如下图:

Spring Security基本框架之过滤器

Original: https://blog.csdn.net/qq_27062249/article/details/127825763
Author: 大后生大大大
Title: Spring Security基本框架之过滤器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/661163/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球