为什么加载了两个OAuth2AuthorizationRequestRedirectFilter分析

2022-12-02 17:21:42 浏览数 (1)

活动地址:CSDN21天学习挑战赛 相关文章:

  1. OAuth2的定义和运行流程
  2. Spring Security OAuth实现Gitee快捷登录
  3. Spring Security OAuth实现GitHub快捷登录
  4. Spring Security的过滤器链机制
  5. Spring Security OAuth Client配置加载源码分析
  6. Spring Security内置过滤器详解

前言

在前面的示例中,不知道你发现没有,打印出来的过滤器有重复的。

这是为什么?

带着问题,我们来分析一下源码。

源码分析

在以前的文章中,我们已经知道了过滤器会在AbstractConfiguredSecurityBuilder中的configure()中加载

我们进去打个断点看下,重启进入断点

看configurers有5个值,我们暂且不管这5个Configurer是干什么用的,后面再说,看左边的堆栈比较容易理解,认证管理器,原来是HttpSecurity在加载的时候,也会去调用doBuild(),这5个Configurer进行逐个调式后也并没有发现创建过滤器的地方,因此我们不再继续深入。

断点继续往下执行,终于看到了我们熟悉的几个过滤器

这么多过滤器你可以一个个去调式,但这也太费时间了,直接看OAuth2AuthorizationRequestRedirectFilter吧,创建一个对象总的用构造器吧,把这几个构造器全打上断点。

去掉前面的端点,直接进入了OAuth2AuthorizationRequestRedirectFilter的断点,这里就让我发现了秘密

原来在加载OAuth2LoginConfigurer的时候,也创建了一个OAuth2AuthorizationRequestRedirectFilter对象

0 人点赞