Spring Boot新版本中WebSecurityConfigurerAdapter弃用后的替代方案
替代WebSecurityConfigurerAdapter的Spring Security配置方案
从Spring Security 5.7.0版本开始,WebSecurityConfigurerAdapter被标记为弃用,官方推荐使用基于Bean的组件配置方式来实现安全规则,替代原来的继承重写模式。
你原来的配置逻辑可以通过注册SecurityFilterChain Bean来完全实现,对应代码如下:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class SecurityConfiguration { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // 配置请求授权规则 .authorizeHttpRequests(auth -> auth .requestMatchers("/**/favicon.ico", "/css/**", "/js/**", "/images/**", "/webjars/**") .permitAll() // 指定路径允许匿名访问 .anyRequest() .authenticated() // 其他所有请求必须认证 ) // 启用默认表单登录 .formLogin(); return http.build(); } }
关键改动说明
- 移除了对
WebSecurityConfigurerAdapter的继承,改用@Configuration+@EnableWebSecurity注解标记配置类 - 用
SecurityFilterChain类型的Bean替代原来的configure(HttpSecurity)方法,所有HttpSecurity的配置逻辑都在这个Bean方法里完成 - 新版API中
authorizeRequests()已被弃用,替换为authorizeHttpRequests(),用法逻辑一致但更符合当前的设计规范 - 表单登录的配置保持简洁,
.formLogin()会启用Spring Security默认的表单登录页面和认证流程,和原代码效果完全一致
内容的提问来源于stack exchange,提问作者azizkale
相关产品推荐
相关产品推荐

