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

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

  • 相关阅读:
    yolov8 ValueError和RuntimeError
    java集合框架——List集合概述及ArrayList,LinkedList的区别
    入门小白拥有服务器的建议
    蛋白质相互作用
    【产品运营】如何提升B端产品的竞争力(上)
    花生壳内网穿透+Windows系统,如何搭建网站?
    u盘制成系统盘之后如何让恢复普通盘
    tomcat部署jenkins
    浏览器复制功能
    开源组件与中间件的学习笔记3
  • 原文地址:https://blog.csdn.net/qq_27062249/article/details/127825763