簡體   English   中英

REST API 具有角色限制字段的端點

[英]REST API endpoint with roles-restricted fields

需要您對我的項目提出建議,因為我目前遇到一個問題。

我有一個端點api/v1/groups/:id ,登錄用戶可以從中獲取有關特定組的信息。 用戶可以獲得兩種可能的回復

  1. { id: 'groupId', name: 'groupName', description: 'groupDescription', isAccessApproved: bool }

isAccessApproved - 是一個 boolean 值,指示用戶加入組的權限是否已獲批准

  1. 如果用戶還沒有發送加入該組的請求,他將收到一條回復,說找不到具有此 ID 的組。

但是,我被要求管理員和超級管理員獲取有關特定組的所有信息,即使他們沒有發送加入該組的請求也是如此。

所以主要問題是,如果我將在api/v1/groups/:id端點上為管理員和超級管理員角色添加角色檢查,我將在方法內部檢查是否檢查以及兩種不同類型的 JSON object 可以從此返回端點: isAccessApproved 字段為 bool 值的那個和另一個 JSON object 將不包含此密鑰,因為發送它沒有用,他們沒有發送加入該組的請求,他們根本不需要它。 這種情況讓我很困惑。 根據我在堆棧上閱讀的內容,以下解決方案是可能的:

  1. api/v1/groups/:id將返回 JSON object 給管理員和超級管理員,其中包含有關特定組的完整信息,無需 isAccessApproved。 對於發送加入組請求的所有其他用戶,api/v1/groups/:id 將返回 JSON 和 isAccessApproved 布爾值。

  2. 創建將由超級管理員和管理員使用的api/v1/admin/groups/:id 仍然不確定管理員和超級管理員是否可以同時使用它,因為超級管理員將在應用程序中擁有更多權限

  3. 管理員和超級管理員將從api/v1/groups/:id請求一個組,但是某種中間件將定義它是否是管理員/超級管理員請求源並將請求轉發到api/v1/admin/groups /:id (例如)。

  4. 我不知道。 也許一些單獨的端點像api/v1/admin/groups/:id/admin ??????

請指教。

在我看來,我會選擇使用第二種方法。 創建一個指定的端點來處理同一權限級別的請求比在同一端點處理不同權限級別的請求更加清晰和簡單。 您可以在此指定端點上添加[Authorize(Roles = "Admin,Super Admin")]屬性,此屬性將僅允許具有AdminSuper Admin角色的用戶可以訪問此端點。 Super Admin在你的應用程序中可能擁有更多的權限,但是在這個端點, Super AdminAdmin擁有相同的權限來獲取數據。

第三種方法也是一個好方法,但可能需要寫一個中間件來檢查用戶的角色,然后重寫請求路徑。

暫無
暫無

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

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