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

Spring Boot 3.2.1注册接口401未授权问题求助

问题分析与解决方案

核心问题

你的注册接口实际请求路径是POST /registration/customer,但Security配置里放行的路径是/api/registration/**,两者不匹配,导致该请求未被纳入放行规则,仍然触发HTTP Basic认证,最终返回401。同时,原配置缺少对其他接口的授权规则,默认情况下Spring Security会拒绝所有未明确授权的请求。

修正后的配置代码

@Configuration
public class FoodDeliverySecurityConfig {

    @Bean
    public BCryptPasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }

    @Bean
    public UserDetailsManager userDetailsManager(DataSource dataSource){
        JdbcUserDetailsManager jdbcUserDetailsManager = new JdbcUserDetailsManager(dataSource);
        jdbcUserDetailsManager.setUsersByUsernameQuery("select email, password from user where email = ?");
        jdbcUserDetailsManager.setAuthoritiesByUsernameQuery("select email, user_type from user where email = ?");
        return jdbcUserDetailsManager;
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests(configurer ->
                configurer
                        // 放行注册接口,路径与实际请求保持一致
                        .requestMatchers(HttpMethod.POST, "/registration/**").permitAll()
                        // 要求所有其他接口必须认证后才能访问
                        .anyRequest().authenticated());
        // 启用HTTP Basic认证
        http.httpBasic(Customizer.withDefaults());
        // 禁用CSRF适配无状态API
        http.csrf(csrf -> csrf.disable());
        return http.build();
    }
}

关键修改点

  • 修正路径匹配:将放行路径改为/registration/**,确保和实际请求路径/registration/customer匹配;如果你的接口设计应为/api/registration/customer,则保持配置路径不变,调整请求路径即可。
  • 补充全局授权规则:增加.anyRequest().authenticated(),明确所有未被放行的接口必须经过认证才能访问,契合“保护所有接口但允许注册接口匿名访问”的需求。

错误日志佐证

从日志中可以看到:

2024-02-03T12:42:42.314+05:30 DEBUG 96098 --- [nio-8082-exec-1] o.s.security.web.FilterChainProxy : Securing POST /registration/customer

Spring Security正在对/registration/customer请求进行安全校验,说明该路径未被原放行规则匹配到,修正路径后即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:35:57