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

Spring Boot中SecurityProperties.getIgnored()方法无法解析求助

解决Spring Boot中SecurityProperties.getIgnored()方法找不到的问题

你遇到的核心问题是Spring Boot版本迭代导致的API变更——你想要使用的旧版SecurityProperties(2.0.0.M3里程碑版)中的getIgnored()方法,在后续正式版及更高版本的Spring Boot中已经被移除重构了。当前你注入的SecurityProperties是对应Spring Boot版本的类,自然找不到这个过时的方法。

问题根源

Spring Boot 2.0正式发布后,对Security模块的配置API做了大幅调整:

  • 旧版SecurityProperties里的ignored属性及getIgnored()方法被移除
  • 路径忽略的配置逻辑被拆分到更清晰的API中,官方不再推荐通过SecurityProperties来获取忽略路径

解决方案

根据你使用的Spring Boot版本,推荐以下几种替代方案:

1. 使用WebSecurityCustomizer配置忽略路径(官方推荐)

这是Spring Boot 2.x及以上版本的标准路径忽略配置方式,直接在配置类中定义WebSecurityCustomizer Bean:

@Configuration
public class WebSecurityConfig {

    // 可以从配置文件读取忽略路径,灵活适配需求
    @Value("${app.security.ignored-paths:/,/favicon.ico,/api/authenticate,/api/user}")
    private String[] ignoredPaths;

    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        return web -> web.ignoring().antMatchers(ignoredPaths);
    }

    // 你的其他Security核心配置
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .exceptionHandling().authenticationEntryPoint(authenticationEntryPoint).and()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
            .authorizeRequests()
            // 已通过WebSecurityCustomizer忽略的路径无需重复配置permitAll
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginProcessingUrl("/api/authentication")
            .successHandler(ajaxAuthenticationSuccessHandler)
            .failureHandler(ajaxAuthenticationFailureHandler)
            .usernameParameter("username")
            .passwordParameter("password")
            .and()
            .logout()
            .logoutUrl("/api/logout")
            .logoutSuccessHandler(ajaxLogoutSuccessHandler)
            .invalidateHttpSession(true)
            .deleteCookies("JSESSIONID");
        http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
        http.headers().cacheControl();
    }
}

2. 直接在HttpSecurity中配置permitAll路径

如果需要忽略的路径数量不多,也可以直接在configure(HttpSecurity http)方法中通过antMatchers().permitAll()统一配置,就像你已经写的/api/authenticate、/这些路径一样,把所有需要开放的路径列在这里即可。

3. 降级Spring Boot版本(不推荐)

如果你非要使用旧版的getIgnored()方法,可以将Spring Boot版本降级到2.0.0.M3,但这是一个不稳定的里程碑版本,存在大量未修复的bug,绝对不建议在生产环境使用。

补充说明

如果你之前是通过application.properties/application.yml中的spring.security.ignored属性配置忽略路径,在Spring Boot 2.7+版本中这个属性已经被标记为Deprecated,官方明确推荐使用WebSecurityCustomizer或SecurityFilterChain来替代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:59:12