系統設計:基於角色的權限管理設計實現


📖博客原文 :xxoo521.com《系統設計:基於角色的權限管理設計實現》

背景

內部運營系統的很多 API,涉及到外網正式環境下的用戶信息變更。出於安全考慮,在設計之初保留了所有的操作記錄,但這用於事后回查;真正要避免線上事故的發生,還需要權限管理。

當前,系統的代碼由 3 部分組成:前端、中台和后台。其中,前端負責交互邏輯,中台負責主要的業務邏輯,后台負責提供數據庫的讀寫 api。所有的校驗和業務邏輯,都是由中台拼接實現,所以權限管理的改造需要中台參與。

基於角色的權限設計

假設系統支持 4 種角色:

  • 角色 A:超級管理員
  • 角色 B:運營人員
  • 角色 C:開發人員
  • 角色 D:游客(普通用戶)

每個 api 都按照其職能,划分到對應的 api 集合中:

  • 集合 a:用戶管理相關 api
  • 集合 b:
    • 日志相關 api
    • 環境信息相關 api
  • 集合 c:
    • 資源調整 api
    • 黑名單 api

每種角色可以調通單個/多個/全部的 api 集合:

  • 角色 A:所有 api 集合
  • 角色 B:
    • 集合 b
    • 集合 c
  • 角色 C:所有 api 集合
  • 角色 D:
    • 集合 b

需要注意的是,每個用戶只能是一種角色,而角色可以對應多個集合,每個集合可以對應多個 api。簡而言之,角色是用戶身份,它是唯一的。

例如,對於某些特定的用戶(比如實習生),可以專門新建一個角色,再對此角色所需要的 api 集合進行排列組合。

中台與服務化

后台以服務化的方式提供了最基本的數據庫讀寫 api,日后的改動成本低,運維成本低,並且可以給其他應用提供服務。

而主要的邏輯交給了中台進行拼接組合,中台不需要保存狀態。同時,業務邏輯的改動將不涉及數據庫和后台,中后台完全接耦,簡化了發布和部署流程。

👇掃碼關注「心譚博客」,查看「前端圖譜」&「算法題解」,堅持分享,共同成長👇


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM