Spring Boot 3.2.3中WebSecurityConfigurerAdapter编译错误求助
问题原因及解决方案
首先明确:WebSecurityConfigurerAdapter类在Spring Security 6.x版本(Spring Boot 3.x系列默认集成该版本)中已经被完全移除,这就是你编译报错找不到类的根本原因。
替代配置方案
Spring Security 6.x改用了基于组件的配置方式,核心是通过定义SecurityFilterChain和UserDetailsService的Bean来实现登录等安全功能,以下是适配你技术栈的示例:
1. 安全配置类示例
替换你原来继承WebSecurityConfigurerAdapter的代码,改成这种写法:
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.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class SecurityConfig { // 配置安全过滤链,定义请求权限、登录逻辑等 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .requestMatchers("/login", "/css/**", "/js/**").permitAll() // 允许无需认证访问的路径 .anyRequest().authenticated() // 其他所有请求需要认证 ) .formLogin(form -> form .loginPage("/login") // 自定义登录页面路径(如果有的话) .defaultSuccessUrl("/home", true) // 登录成功后跳转的页面 .permitAll() ) .logout(logout -> logout .permitAll() ); return http.build(); } // 配置用户信息服务,这里用内存用户做示例,你可以替换为数据库查询逻辑 @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withUsername("user") .password(passwordEncoder().encode("password")) .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } // 配置密码编码器,Spring Security 6.x强制要求必须指定密码编码器 @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
2. 确认Maven依赖
检查你的pom.xml中Spring Security依赖是否正确,Spring Boot 3.x只需要引入starter即可,无需单独指定版本:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
IntelliJ IDEA 操作注意事项
- 右键项目 → 选择
Maven→Reload Project,确保依赖刷新完成 - 如果还是有报错,可以尝试
File→Invalidate Caches...→ 勾选Clear file system cache and local history后重启IDEA
内容的提问来源于stack exchange,提问作者Hemantha Wanniarachchi
相关产品推荐
相关产品推荐

