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

Postman返回HTML而非JSON:Spring Boot Security接口权限异常排查

搞定Spring Security Basic Auth不生效的问题

嘿,这个问题我之前也碰到过!明明在Postman里填了Basic Auth的账号密码,调用POST/DELETE接口却还是返回登录表单,核心原因就是你的Security配置没开启HTTP Basic认证支持。

为啥会这样?

你当前的配置里只加了formLogin(),Spring Security默认会把未授权请求导向表单登录流程,完全没处理你Postman里传的Basic Auth头信息——说白了就是它不认这种认证方式,自然就跳登录页了。

怎么解决?

很简单,在configure(HttpSecurity http)方法里加一行.httpBasic()就行,让Security同时支持表单登录和HTTP Basic认证。

修改后的完整配置代码

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers(HttpMethod.GET,"/api").permitAll()
            .antMatchers(HttpMethod.POST,"/api").hasRole("MODERATOR")
            .antMatchers(HttpMethod.DELETE,"/api").hasRole("ADMIN")
            .anyRequest().hasRole("ADMIN")
            .and()
            .httpBasic() // 新增:启用HTTP Basic认证
            .and()
            .formLogin().permitAll()
            .and()
            .logout().permitAll()
            .and()
            .csrf().disable();
}

额外提个醒

  • 加了.httpBasic()之后,浏览器访问还是会走表单登录,Postman这类工具发的带Basic Auth头的请求就会被正确验证了,完美适配你的REST接口场景。
  • 你的接口权限规则是对的:GET开放,POST需要MODERATOR,DELETE需要ADMIN,这个逻辑可以保留。
  • 还有哦,withDefaultPasswordEncoder()只适合本地开发测试,上线一定要换成像BCryptPasswordEncoder这种安全的密码编码器,别偷懒!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:33:39