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

Spring Boot中Postman调用登录接口返回403,但浏览器认证正常

问题分析与解决方案

核心问题:冲突的Spring Security配置

你的SecurityConfig类中存在两个HttpSecurity配置,但只有filterChain这个@Bean会被Spring Security加载生效。这个Bean的规则要求所有请求必须经过认证,包括POST /login接口,因此调用时直接返回403。而你编写的protected void configure(HttpSecurity http)方法因未标记为@Bean,也未被配置类机制触发,完全未生效。

修复步骤

1. 统一Security配置到SecurityFilterChain Bean

删除无用的configure(HttpSecurity http)方法,将允许/login接口匿名访问的规则整合到filterChain Bean中:

@Configuration
public class SecurityConfig {
    
    @Autowired
    private UserDetailsServiceImpl userDetailsService;

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.cors()
            .and()
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authorizeHttpRequests(authz -> authz
                .requestMatchers(HttpMethod.POST, "/login").permitAll() // 允许登录接口匿名访问
                .anyRequest().authenticated()
            )
            .httpBasic(withDefaults());
        return http.build();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
    }

    @Bean
    public AuthenticationManager getAuthenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
        return authenticationConfiguration.getAuthenticationManager();
    }
}

2. 验证密码加密规则

确保数据库中存储的用户密码是通过BCryptPasswordEncoder加密后的字符串。若密码为明文存储,后续认证会失败,需提前处理。

3. 检查Postman请求格式

确保POST /login请求符合要求:

  • 请求头设置Content-Type: application/json
  • 请求体为JSON格式,示例:
    {
        "username": "你的用户名",
        "password": "你的密码"
    }
    

后续扩展

修复登录接口403问题后,需添加JWT过滤器来验证其他接口的Token,拦截除/login外的所有请求并校验Token有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:25:19