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

Spring Security授权成功却返回404错误的解决求助

针对Firebase Token授权成功但返回404的Spring Security修复建议

核心问题分析

授权成功却返回404,说明Spring Security已放行该请求,但后端无对应路径的Controller处理逻辑,或路径配置存在不一致。结合日志里的POST /users/extract-aud请求,从Security配置层面可做以下检查与修复:

1. 校验Security路径匹配规则

确保SecurityConfig中的路径与Controller的映射完全一致,避免大小写、斜杠、拼写错误:

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers(HttpMethod.POST, "/users/extract-aud").authenticated() // 明确请求方法与路径,和Controller映射严格匹配
                .anyRequest().denyAll()
            )
            .addFilterBefore(jwtTokenFilter(), UsernamePasswordAuthenticationFilter.class);
        return http.build();
    }
}

2. 放行默认错误路径

当请求无对应Controller时,Spring会转发到/error,若Security未放行该路径,会触发二次拦截。需在配置中添加:

.requestMatchers("/error").permitAll() // 放行默认错误路径,避免授权后触发/error被拦截

3. 排查JwtTokenFilter是否篡改请求路径

检查JwtTokenFilter的doFilterInternal方法,确保没有代码无意中修改请求URI,导致后续路径与Controller不匹配:

public class JwtTokenFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        // 禁止随意修改request的URI
        filterChain.doFilter(request, response);
    }
}

4. 开启Security调试日志定位问题

在application.properties中添加日志配置,追踪请求流转细节:

logging.level.org.springframework.security=DEBUG

通过调试日志可确认请求是否到达DispatcherServlet,或在过滤器链后出现路径匹配异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:28:19