Spring Security基本框架之过滤器

本文解析SpringSecurity中的认证和授权过滤器工作原理,包括SecurityContextPersistenceFilter、CsrfFilter等核心组件,以及如何通过FilterChainProxy管理和定制过滤器链。
摘要由CSDN通过智能技术生成

本文内容来自王松老师的《深入浅出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整合到原生过滤器链中,如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值