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

Spring Security配置运行时错误:WebSecurityConfigurerAdapter类不存在

问题原因

WebSecurityConfigurerAdapter在Spring Security 5.7版本开始就被标记为弃用,到6.x版本已被完全移除,所以你在6.2.4版本中找不到这个类是正常的,官方已废弃原有继承适配器的配置方式,改用基于组件Bean的写法。

解决方案

1. 替换configure(HttpSecurity):定义SecurityFilterChain Bean

原来继承WebSecurityConfigurerAdapter重写configure(HttpSecurity)的逻辑,现在通过注册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.web.SecurityFilterChain;

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            // 配置请求权限
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/public/**", "/login").permitAll()
                .anyRequest().authenticated()
            )
            // 配置表单登录
            .formLogin(form -> form
                .defaultSuccessUrl("/home", true)
                .permitAll()
            )
            // 配置退出登录
            .logout(logout -> logout
                .logoutSuccessUrl("/login?logout")
                .permitAll()
            );

        return http.build();
    }
}

2. 替换configure(AuthenticationManagerBuilder):注册UserDetailsService和PasswordEncoder Bean

原来配置用户认证的逻辑,现在通过定义UserDetailsService(用户信息来源)和PasswordEncoder(密码加密器)Bean实现:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;

@Configuration
public class SecurityConfig {

    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails admin = User.withUsername("admin")
            .password(passwordEncoder().encode("admin123"))
            .roles("ADMIN")
            .build();

        UserDetails user = User.withUsername("user")
            .password(passwordEncoder().encode("user123"))
            .roles("USER")
            .build();

        return new InMemoryUserDetailsManager(admin, user);
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

3. 替换configure(WebSecurity):使用WebSecurityCustomizer

如果需要忽略静态资源或特定路径的安全校验,注册WebSecurityCustomizer Bean即可:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;

@Configuration
public class SecurityConfig {

    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        return web -> web.ignoring()
            .requestMatchers("/css/**", "/js/**", "/img/**", "/favicon.ico");
    }
}

内容的提问来源于stack exchange,提问作者devoverflow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:58:21