如何从Spring Security 5迁移到Spring Security 6/Spring Boot 3

💡 原文中文,约7300字,阅读约需18分钟。
📝

内容提要

Spring Security 6 带来了变化,移除了已弃用的方法并引入了新方法。本教程解释了如何从 Spring Security 5 迁移到 6,使用 lambda DSL 进行简化配置。OpenRewrite 可以加快这一过程。讨论了 Spring Security 和 Spring Boot 之间的版本兼容性,并提供了代码修改示例。

🎯

关键要点

  • Spring Security 6 移除了已弃用的方法并引入新方法。

  • 迁移到 Spring Security 6 可以增量完成,不会破坏现有代码库。

  • OpenRewrite 可以加快迁移过程。

  • Spring Boot 2 默认使用 Spring Security 5,而 Spring Boot 3 使用 Spring Security 6。

  • 可以通过在 pom.xml 中指定版本来覆盖默认的 Spring Security 版本。

  • Spring Security 6 引入了多项功能更新,包括删除 WebSecurityConfigurerAdapter 和使用基于组件的安全配置。

  • authorizeRequests() 被替换为 authorizeHttpRequests(),并引入了 requestMatcher() 和 securityMatcher() 方法。

  • 项目设置需要添加 spring-boot-starter-web 和 spring-boot-starter-security 依赖项。

  • 建议采用增量迁移方法,以防止更新时破坏现有代码。

  • 在 Spring Security 6 中,@Configuration 注解不再是 @EnableWebSecurity 的一部分。

  • WebSecurityConfigurerAdapter 类被删除,采用基于组件的配置。

  • 使用 WebSecurityCustomizer bean 来修改排除静态资源的方法。

  • 通过注册 InMemoryUserDetailsManager bean 来重构身份验证逻辑。

  • HTTP 安全配置通过注册 SecurityFilterChain bean 来实现。

  • 请求缓存的性能在 Spring Security 6 中得到了提升。

  • 可以使用 OpenRewrite 工具将现有应用程序迁移到 Spring Boot 3。

延伸问答

Spring Security 6 相比于 5 有哪些主要变化?

Spring Security 6 移除了 WebSecurityConfigurerAdapter 类,采用基于组件的安全配置,并引入了 authorizeHttpRequests()、requestMatcher() 和 securityMatcher() 等新方法。

如何使用 OpenRewrite 加快迁移到 Spring Security 6 的过程?

可以在 pom.xml 中添加 OpenRewrite 插件,并使用特定的 recipe 来自动化迁移过程,从而加快升级到 Spring Security 6 的速度。

在迁移到 Spring Security 6 时,如何处理已弃用的方法?

建议采用增量迁移方法,逐步替换已弃用的方法,并利用 IDE 的警告功能来识别这些方法。

Spring Boot 2 和 Spring Boot 3 在 Spring Security 版本上有什么区别?

Spring Boot 2 默认使用 Spring Security 5,而 Spring Boot 3 则使用 Spring Security 6。

如何在 Spring Security 6 中配置 HTTP 安全?

在 Spring Security 6 中,可以通过注册 SecurityFilterChain bean 来配置 HTTP 安全,使用 authorizeHttpRequests() 方法定义授权规则。

迁移到 Spring Security 6 时需要注意哪些项目设置?

需要在 pom.xml 中添加 spring-boot-starter-web 和 spring-boot-starter-security 依赖项,并确保使用 Java 17 及以上版本。

🏷️

标签

➡️

继续阅读