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

配置Spring Security的antMatchers后仍无法访问Controller求助

问题排查与解决方案

核心问题分析

你的配置中同时使用了两种Spring Security放行路径的方式,这会导致逻辑冲突,是访问失败的主要原因:

  • SecurityFilterChain中通过antMatchers(EXCLUDE_PATH).permitAll():允许请求通过过滤器链,无需认证
  • WebSecurityCustomizer中通过webSecurity.ignoring().antMatchers(EXCLUDE_PATH):让请求完全绕过Spring Security过滤器链

两者混用会引发不可预期的拦截逻辑,导致/test路径无法正常放行。

具体排查与修复步骤

1. 移除重复配置,保留一种放行方式

推荐保留SecurityFilterChain中的配置(它能让请求正常经过CORS等必要过滤器,同时实现放行),删除WebSecurityCustomizer相关代码:

// 删掉这段重复配置代码
@Bean
WebSecurityCustomizer webSecurityCustomizer() {
    return webSecurity -> {
        webSecurity.ignoring().antMatchers(EXCLUDE_PATH);
    };
}

2. 验证路径匹配准确性

  • 确认请求路径是精确的/test,避免带额外斜杠(如/test/)、参数或大小写不一致(Spring MVC默认路径大小写敏感)
  • 检查Postman请求的实际地址是否与Controller映射完全匹配

3. 排查自定义认证入口的影响

临时注释掉异常处理中的自定义入口配置,测试是否能正常访问:

// 临时注释,排查自定义入口是否拦截了放行请求
// .exceptionHandling().authenticationEntryPoint(customAuthenticationEntryPoint).and()

如果注释后可以访问,说明customAuthenticationEntryPoint的逻辑存在问题,需要检查它是否错误拦截了放行路径的请求。

4. 确认Controller被正确扫描

  • 检查启动类的@SpringBootApplication是否覆盖了TestController所在的包路径,必要时添加@ComponentScan指定扫描范围
  • 确认TestController的@RestController注解未遗漏,确保Spring能识别并注册该控制器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:58:09