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

Spring Boot 3.2.0中Spring Security过时API替换方案咨询

Spring Boot 3.2(Spring Security 6.1+)WebSecurityConfig 过时方法修复方案

从Spring Boot 2.7.x升级到3.2.x后,对应的Spring Security版本更新到6.1+,原有配置里的大量API已过时,以下是修改后的完整代码及对应说明:

修改后的完整代码

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class WebSecurityConfig {
    private final JwtAuthenticationFilter jwtAuthenticationFilter;

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            // 启用默认CORS配置,替代原过时的cors().and()
            .cors(Customizer.withDefaults())
            // 禁用CSRF,替代原过时的csrf().disable()
            .csrf(csrf -> csrf.disable())
            // 禁用HTTP Basic认证,替代原过时的httpBasic().disable()
            .httpBasic(basic -> basic.disable())
            // 配置无状态会话,替代原过时的sessionManagement().sessionCreationPolicy().and()
            .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
            // 配置请求授权规则,替代原过时的authorizeRequests()
            .authorizeHttpRequests(auth -> auth
                // 允许指定路径无需认证,替代原过时的permitAll()
                .requestMatchers("/", "/api/v1/auth/**").permitAll()
                .requestMatchers(HttpMethod.GET, "/api/v1/board/**").permitAll()
                // 其余所有请求需要认证
                .anyRequest().authenticated()
            );

        http.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
        return http.build();
    }
}

关键修改点说明

  1. 注解修正:把原代码中的@Configurable换成@Configuration——这是Spring配置类的标准注解,@Configurable是用于AspectJ织入的,这里属于误用。
  2. 链式调用改用Lambda风格:Spring Security 6.1+废弃了原有的and()链式拼接方式,改用Lambda配置更清晰:
    • 原.cors().and() → .cors(Customizer.withDefaults())(如果需要自定义CORS规则,可以在Lambda中配置自己的CorsConfigurationSource)
    • 原.csrf().disable() → .csrf(csrf -> csrf.disable())
    • 原.httpBasic().disable() → .httpBasic(basic -> basic.disable())
    • 原.sessionManagement().sessionCreationPolicy(...).and() → .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
  3. 授权配置更新:
    • 原authorizeRequests()替换为authorizeHttpRequests()——新方法适配了更灵活的请求匹配和授权逻辑
    • 原过时的permitAll()属于旧的授权器实现,现在authorizeHttpRequests下的requestMatchers().permitAll()是新的有效方法,功能完全一致
  4. 构建方法更新:原getOrBuild()替换为build()——前者已被标记为过时,直接用build()构建SecurityFilterChain即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:48:28