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

Spring Security中MVC控制器授权问题:/invoice-result请求遭拦截

Spring Security 授权问题:/invoice-result 访问被拦截的解决方案

问题核心

你的场景中存在两个Spring Security Filter Chain(defaultSecurityFilterChain和apiSecurityFilterChain),请求被优先级更高的apiSecurityFilterChain拦截,而该链未配置/invoice-result的放行规则,导致即使defaultSecurityFilterChain配置了permitAll()也不生效。

具体解决步骤

  • 明确FilterChain的匹配范围与优先级
    Spring Security会根据FilterChain的@Order注解值确定执行顺序,数值越小优先级越高。检查apiSecurityFilterChain的请求匹配规则(比如是否误用anyRequest()而非antMatcher("/api/**")),确保它仅匹配API前缀的请求,避免覆盖/invoice-result路径。

  • 为apiSecurityFilterChain添加放行规则
    如果apiSecurityFilterChain的匹配范围确实包含/invoice-result(比如全局匹配),需在该链中显式添加放行配置:

    @Bean
    public SecurityFilterChain apiSecurityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/invoice-result").permitAll()
                .requestMatchers("/api/**").authenticated()
                // 其他授权规则
            )
            // 其他Security配置(如CSRF、会话管理等)
        return http.build();
    }
    
  • 配置正确的FilterChain优先级
    确保apiSecurityFilterChain仅处理API请求,defaultSecurityFilterChain处理其余请求,通过@Order明确优先级:

    @Bean
    @Order(1) // 高优先级,仅处理/api前缀请求
    public SecurityFilterChain apiSecurityFilterChain(HttpSecurity http) throws Exception {
        http
            .antMatcher("/api/**")
            .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
        return http.build();
    }
    
    @Bean
    @Order(2) // 低优先级,处理非API请求
    public SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/invoice-result").permitAll()
                .anyRequest().authenticated()
            )
        return http.build();
    }
    
  • 验证转发路径的拦截规则
    确认PaymentNotAvailableController转发到index.html的操作不会触发新的路径拦截,若index.html需要放行,也需在对应FilterChain中添加requestMatchers("/index.html").permitAll()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:14:51