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

Spring Boot REST接口基础认证返回403 Forbidden问题求助

问题排查与解决

核心问题:权限配置不匹配

你在配置用户权限时用的是authorities("STANDARD_USER"),但在授权规则里用了hasRole("STANDARD_USER")——Spring Security的hasRole()方法会自动给角色名加上ROLE_前缀,而你定义的用户权限并没有这个前缀,导致权限校验不通过,返回403。

两种解决方法

方法一:修改用户权限配置,添加ROLE_前缀

在configure(AuthenticationManagerBuilder auth)中,把权限名改成带ROLE_的形式:

auth.inMemoryAuthentication()
        .withUser("john").password("{noop}1234").authorities("ROLE_STANDARD_USER")
        .and()
        .withUser("david").password("{noop}1234").authorities("ROLE_ADMIN");

这样hasRole("STANDARD_USER")就能正确匹配到ROLE_STANDARD_USER权限。

方法二:修改授权规则,使用hasAuthority()替代hasRole()

保持用户权限配置不变,把hasRole()换成hasAuthority(),因为hasAuthority()会直接匹配你定义的权限名,不会自动加前缀:

.authorizeRequests()
.antMatchers(GET, "/api/**").hasAuthority("STANDARD_USER")

验证方式

修改后用Postman发送请求时,在Authorization选项卡选择Basic Auth,输入用户名john和密码1234,即可正常访问接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:33:26