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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:54:56