You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:05:37