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

如何从WebSecurityConfigurerAdapter迁移到SecurityFilterChain

Spring Security 废弃配置迁移方案

WebSecurityConfigurerAdapter在Spring Security 5.7及以上版本被标记为@Deprecated,官方推荐通过向Spring容器注册SecurityFilterChain类型Bean的方式实现安全配置,无需再继承适配器类重写方法。

你提供的旧配置对应的等效新实现如下:

@Configuration
static class HttpSecurityConfiguration {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            // 所有请求都需要认证
            .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
            // 启用默认表单登录
            .formLogin(Customizer.withDefaults())
            // 启用默认HTTP Basic认证
            .httpBasic(Customizer.withDefaults())
            // 会话策略设置为不主动创建会话
            .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.NEVER))
            // 关闭CSRF防护
            .csrf(csrf -> csrf.disable());
        return http.build();
    }
}

迁移关键注意点

  • 新写法不需要继承任何基类,直接在配置类中声明SecurityFilterChain的Bean即可,Spring会自动读取该Bean中的安全规则。
  • 旧版的authorizeRequests()属于已过时的权限拦截API,官方推荐替换为基于AuthorizationManager的authorizeHttpRequests(),两者效果在你给出的场景下完全一致;如果需要100%兼容旧逻辑,也可以暂时继续使用authorizeRequests(),后续版本迭代再替换。
  • 旧写法中无自定义参数的配置项(如formLogin()、httpBasic()),新写法传入Customizer.withDefaults()即可启用和旧版完全一致的默认配置。
  • 所有配置逻辑编写完成后,必须调用http.build()生成SecurityFilterChain实例返回,否则配置不会生效。
  • 如果原有代码中还通过重写configure(WebSecurity web)配置了忽略拦截的路径(比如静态资源),可以单独注册WebSecurityCustomizer类型的Bean实现对应逻辑,不需要写在SecurityFilterChain的配置中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:33:11