亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Boot:@PreAuthorize 給出 403 禁止

Spring Boot:@PreAuthorize 給出 403 禁止

慕桂英3389331 2023-07-28 16:55:10
我是 Spring Security 的新手,并嘗試在我的服務上添加身份驗證層。該服務工作正常@PreAuthorize,但是,當我使用它并添加角色時,@PreAuthorize("hasRole('ROLE_USER')")它在郵遞員中向我顯示了此錯誤,甚至在控制臺中也沒有:org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)\n\tat 包控制器:@RestController@RequestMapping("/api/package")@Slf4j@AllArgsConstructor@CrossOrigin("*")public class PackageController {    private final PackageService packageService;    @GetMapping("/list")    @PreAuthorize("hasRole('ROLE_USER')")    public ResponseEntity<?> getAllPackages(){        return ResponseEntity.ok(packageService.getAllPackages());    }}我使用郵遞員登錄并將承載令牌復制到其字段。用戶已使用 postman 注冊并登錄,并且存在于數據庫中。我嘗試更改包含/排除前綴的角色ROLE_,但顯示相同的結果。我無法弄清楚我做錯了什么,因為我做了很多事情并嘗試了不同的場景,但給出了相同的輸出
查看完整描述

1 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

.antMatchers(HttpMethod.GET, "/api/package/**", "/api/users/**").permitAll()和用于@PreAuthorize("hasRole('ROLE_USER')")端點GET /api/package/list是矛盾的。

如果您想確保安全GET /api/package/list,那么您可以使用.antMatchers(HttpMethod.GET,"/endpoint").hasRole("USER")并確保您在數據庫中具有 stroed 角色ROLE_USER(而不是USER),因為有時這會導致問題。

確保您在標頭中傳遞了有效的令牌。


查看完整回答
反對 回復 2023-07-28
  • 1 回答
  • 0 關注
  • 262 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號