文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringSecurity的过滤器链机制

2022-11-13 14:41

关注

推荐阅读

前言

在“码农小胖哥”的文章中提到一个关键的过滤器链SecurityFilterChain,当一个请求 HttpServletRequest 进入 SecurityFilterChain 时,会通过 matches 方法来确定是否满足条件进入过滤器链,进而决定请求应该执行哪些过滤器。下面我们自己来梳理一遍。

请求执行链路

我们以之前的文章为例,使用@Configuration配置了一个SecurityFilterChain Bean,能在Spring Boot 启动的时候创建SecurityFilterChain Bean到Sping。

@Configuration
public class OAuth2LoginConfig 
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests(authorize -> authorize
                        .anyRequest().authenticated()
                )
                .oauth2Login(withDefaults());
        return http.build();
    }

这是官网的配置,说明任何请求都可以通过OAuth2来登录。上面说过任何请求都会经过SecurityFilterChain 的matches方法,因此我们可以在SecurityFilterChain 的唯一实现类DefaultSecurityFilterChainmatches方法中打上断点(图1),这样当进入断点的时候,可以直观的从IDE中看到调用栈,这是调式源码的时候一个非常有用的方法。

在这里插入图片描述

图1

启动应用,请求一个接口localhost:8080/hello,进入端点后的调用栈如图:

在这里插入图片描述

图2

图中箭头所指的DelegatingFilterProxy为Spring提供的一个标准的Servlet Filter代理,在xml的Spring时代,为了能使用Spring Security,需要在web.xml中添加该过滤器,而在Spring Boot中,Spring Boot的自动配置已经帮我们搞定,具体可见SecurityFilterAutoConfiguration

箭头前面一部分是其他的几个Servlet Filter,我们不做了解。

箭头后面的部分,即DelegatingFilterProxy之后,依次执行了FilterChainProxyDefaultSecurityFilterChain

FilterChainProxy是一个过滤器链代理类,内部保存了过滤器链列表,而过滤器链内部又具有各种过滤器,如图3。
DefaultSecurityFilterChain是SecurityFilterChain的默认实现

到此为止,我们的第一个问题“请求执行链路”基本已经清晰了,即DelegatingFilterProxy >> FilterChainProxy >> SecurityFilterChain >> Filter

在这里插入图片描述

图3

到此这篇关于Spring Security的过滤器链机制的文章就介绍到这了,更多相关Spring Security过滤器链内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯