Spring Boot Maven项目无法导入WebSecurityConfigurerAdapter问题求助
问题原因
你使用的Spring Boot 3.0.5依赖Spring Security 6.0+版本,该版本已彻底移除WebSecurityConfigurerAdapter类——这个类早在Spring Security 5.7就被标记为废弃,6.0正式删除,因此IDE会提示无法解析该符号。
替代方案
Spring Security 6推荐使用基于组件的配置方式,通过定义SecurityFilterChain、UserDetailsService等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.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class SecurityConfig { // 配置HTTP安全规则 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // 授权规则配置 .authorizeHttpRequests(auth -> auth // 允许公开访问的路径,可根据你的实际需求调整 .requestMatchers("/", "/login", "/static/**").permitAll() // 其余所有路径需认证后访问 .anyRequest().authenticated() ) // 表单登录配置 .formLogin(form -> form .loginPage("/login") // 指定自定义登录页路径 .defaultSuccessUrl("/home") // 登录成功跳转页面 .permitAll() ) // 退出登录配置 .logout(logout -> logout .logoutSuccessUrl("/login?logout") .permitAll() ); return http.build(); } // 配置用户信息(示例用内存存储,实际可替换为数据库查询逻辑) @Bean public UserDetailsService userDetailsService() { UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("admin123") .roles("ADMIN") .build(); UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("user123") .roles("USER") .build(); return new InMemoryUserDetailsManager(admin, user); } }
额外说明
- 你的
pom.xml依赖配置无问题,spring-boot-starter-security会自动引入对应版本的Spring Security,无需手动指定版本号。 - 如果需要对接数据库实现用户认证,只需将
UserDetailsService的实现替换为数据库查询逻辑即可,比如通过JPA查询用户信息并封装为UserDetails对象返回。
内容的提问来源于stack exchange,提问作者Manolis Dame
相关产品推荐
相关产品推荐

