簡體   English   中英

spring 引導中基於角色的授權

[英]Role based authorization in spring boot

我是 Spring 引導的新手。 我需要在 spring 引導中實現基於角色的授權。 我有不同的角色,多個用戶將被映射到每個角色。 我將設置不同的訪問權限(讀取、添加、刪除、編輯) 每當調用 api 時,需要檢查訪問權限並允許權限。 我打算使用攔截器來調用具有查詢的方法以從數據庫獲取訪問權限並拒絕或訪問 api。 還有其他更好的方法我可以使用嗎?

如果您使用的是 Spring 安全性,您可以使用@PreAuthorize@PostAuthorize等方法安全性注釋來處理它,甚至可以將它們組合到新的注釋中。

首先您的用戶需要實現 UserDetails 然后您應該根據您的角色和權限結構 Spring 實現getAuthorities()方法 安全性基本上檢查 getAuthority() 方法返回的內容,如果返回值以"ROLE_"為前綴,如"ROLE_ADMIN" ,它將被處理為 ROLE如果它沒有以“ROLE_”為前綴,它將被處理為權限,您可以使用方法注釋來檢查權限和角色,如下例所示:

@PreAuthorize("hasRole('ROLE_ADMIN') and hasAuthority("READ")") 

Spring Security將通過getAuthorities()您的用戶實現檢查您授予的權限,然后根據您的注釋,Spring Security 將代表您自動檢查。

為了清楚起見,您可以查看https://www.baeldung.com/spring-security-granted-authority-vs-role

為了快速實施,您可以查看下面的文章(我不會直接使用它,但您可以理解這個想法。您也可以使用權限,但簡單的解決方案可能是下面的解決方案。):

https://www.baeldung.com/role-and-privilege-for-spring-security-registration

對於授權,也可以有以下兩種方式:

  1. OAuth(參考 - https://medium.com/@bvulaj/mapping-your-users-and-roles-with-spring-boot-oauth2-a7ac3bbe8e7f
  2. Spring 安全角色和權限(參考- https://www.baeldung.com/role-and-privilege-for-spring-security-registration

您可以創建自定義注釋來處理每個角色的請求。 我可以閱讀這篇文章以獲取有關如何實現的更多詳細信息。

在 api 中將具有以下格式:

@GetMapping(...)
@YouCustomAnnotation("roleName")
public void doSomeThing(){
}

如果用戶的角色與注釋中定義的角色匹配,則將調用此 api,如果用戶的角色不匹配,服務器將返回 404 代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM