栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringSecurity - WebSecurityConfigurerAdapter 过时问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringSecurity - WebSecurityConfigurerAdapter 过时问题

项目场景

使用 SpringBoot 版本:2.7.1 集成 Spring-Security


    org.springframework.boot
    spring-boot-starter-security


首先我们对比一下不同版本 WebSecurityConfigurerAdapter 的注释:

  • SpringBoot 2.3.12.RELEASE 中 spring-security-config-5.3.9.RELEASE
  • SpringBoot 2.7.1 中 spring-security-config-5.7.2.RELEASE

    Spring 在标注一个类是过时类的时候,同时也给出了新的建议配置方式(上面红框框起来的地方):
  • 使用 SecurityFilterChain Bean 来配置 HttpSecurity
  • 使用 WebSecurityCustomizer Bean 来配置 WebSecurity

这种方式显然更加清晰了,不需要再依赖于一个抽象类提供的通用功能。


配置 HttpSecurity

从 官方文档提供的 SpringSecurity 架构 中可以知道,Servlet 环境中的 Spring Security 是基于 Servlet Filters 实现的,其中的 FileterChainProxy 由 SecurityFilterChain 提供了一系列的 Filter,架构图如下:

自定义 Filters 配置:

@EnableWebSecurity
public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .disable()
                .csrf()
                .disable();
        return httpSecurity.build();
    }
}

配置 WebSecurity

新版本通过配置 WebSecurityCustomizer Bean 来配置 WebSecurity,通过源码,我们可以看到 WebSecurityCustomizer 是一个 consumer 类型的 函数式接口:

  • WebSecurityCustomizer
@FunctionalInterface
public interface WebSecurityCustomizer {

	
	void customize(WebSecurity web);

}

旧的配置为:

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/login");
    }
}

新的配置为:

@EnableWebSecurity
public class WebSecurityConfig {

    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        return web -> web.ignoring().antMatchers("/login");
    }
}

希望大家拥抱变化,升级是为了更好的提供服务,代码的质量把控也是一个渐进过程。毕竟升级也是为了更完美、更清晰的架构

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003630.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号