SpringSecurity6从入门到上天系列第五篇:详解SpringSecurity6中的Security Filters的作用和原理以及默认的15个核心Security Filters

本文详细介绍了SpringSecurity6中的Security Filters,包括它们的作用和原理,重点讲解了15个核心过滤器,如DisableEncoderUrlFilter、BasicAuthenticationFilter等。此外,还回顾了FilterChainProxy在SpringSecurity中的角色以及默认加载的过滤器顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

福利发送:

        1:你想彻底搞明白SpringSecurity么?你想对SpringSecurity6进行源码级别的学习么?

        2:你想彻底掌握Spring的应用和源码,在面试的时候吊打面试官么?

        那欢迎你加入suns 孙哥的企鹅QQ 3群583783824

        在这里你可以找到志同道合的朋友,还有大神孙哥作为你的领路人。在这里,不仅仅是SpringSecurity更让你在Mybatis、Netty、Rpc、Dubbo、SpringCloud、Docker和k8s....等等技术领域发生翻天覆地的变化。

        以上所有,在群里都有我们免费的视频和笔记资料呦~~~

        欢迎进群领取,期待你的加入!

文章目录

前言

1:知识回顾

2:运行图回顾

一: Security Filters

1:概述

2:Spring Security默认过滤器

二:关键BeanFilter

1:DisableEncoderUrlFilter

2:WebAsynManagerIntegrationFilter

3:SecurityContextHolderFilter

4:HeaderWriterFilter

5:CsrfFilter

6:LogoutFilter

7:UsernamePasswordAuthenticationFilter

8:DefaultLoginPageGeneratingFilter

9:DefaultLogoutPageGeneratingFilter

10:BasicAuthenticationFilter

11:RequestCacheAwareFilter

12:SecurityContextHolderAwareRequestFilter

13:AnonymousAuthenticationFilter

14:ExceptionTranslationFilter

15:AuthorizationFilter


前言

1:知识回顾

       DelegatingFilterProxy 它的作用就是:实现把 servlet容器中的 Filter 同 Spring 容器中的 bean 关联起来,DelegatingFilterProxy实现了Filter接口,Servlet容器启动就会加载好这个类。借助他可以实现普通的Filter拦截到的Http请求交由FilterChainProxy

        FilterChainProxy把 SecurityFilterChain 嵌入到 Web项目的原生过滤器链中DelegatingFilterProxy 把 FilterChainProxy 整合到原生的过滤器链中

        FilterChainProxy 是顶层管理者,统一管理 Security Filter和 SecurityFllterChain过滤器链

        当请求到达 FilterChainProxy 时,会根据当前请求匹配SecurityFilterChain,然后将请求依次转发给 SecurityFilterChain 中的 Security Filter

2:运行图回顾

一: Security Filters

1:概述

         Spring Security 中最终对请求进行处理的就是某个 SecurityFilterChain 中的 Security Filter,这些Filter都设置为 Bean并且注入到 Spring容器中,且会按照先后顺序执行。

        下面展示 Spring Security 中给我们提供的过滤器,以及默认情况下会被加载的过滤器

2:Spring Security默认过滤器

         FilterOrderRegistration这个在构造函数中按照顺序,put了一个又一个的BeanFilter或者叫Security Filter

    FilterOrderRegistration() {
        Step order = new Step(100, 100);
        this.put(DisableEncodeUrlFilter.class, order.next());
        this.put(ForceEagerSessionCreationFilter.class, order.next());
        this.put(ChannelProcessingFilter.class, order.next());
        order.next();
        this.put(WebAsyncManagerIntegrationFilter.class, order.next());
        this.put(SecurityContextHolderFilter.class, order.next());
        this.put(SecurityContextPersistenceFilter.class, order.next());
        this.put(HeaderWriterFilter.class, order.next());
        this.put(CorsFilter.class, order.next());
        this.put(CsrfFilter.class, order.next());
        this.put(LogoutFilter.class, order.next());
        this.filterToOrder.put("org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter", order.next());
        this.filterToOrder.put("org.springframework.security.saml2.provider.service.web.Saml2WebSsoAuthenticationRequestFilter", order.next());
        this.put(X509AuthenticationFilter.class, order.next());
        this.put(AbstractPreAuthenticatedProcessingFilter.class, order.next());
        this.filterToOrder.put("org.springframework.security.cas.web.CasAuthenticationFilter", order.next());
        this.filterToOrder.put("org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter", order.next());
        this.filterToOrder.put("org.springframework.security.saml2.provider.service.web.authentication.Saml2WebSsoAuthenticationFilter", order.next());
        this.put(UsernamePasswordAuthenticationFilter.c
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值