1. 程式人生 > >如何設計許可權系統

如何設計許可權系統

談到許可權控制的設計,需要先理清楚定義和原理。

所以我們需要看到許可權控制中,控制的本質,也就是說控制的是什麼?

其實是:使用者與可以進行的行為的關聯關係

這句話中有3個關鍵詞:使用者、行為、關聯關係。

衍生出如下幾個問題

關於使用者

  • 使用者是怎麼分類的(使用者角色)
  • 使用者和使用者之間是否有關係?如果有,是什麼關係?關係是什麼結構的?
    • 如公司組織架構那種層級分明的樹形結構

關於行為

  • 怎麼將行為分類(一般來說按照行為目的區分、按照行為業務類別區分、按照行為與系統的互動型別區分)
    • 例如,按照行為與系統的互動型別區分
      • 資料許可權:指的是使用者有權操作的那部分資料(讀、寫)
      • 功能許可權:對使用人群在功能修改使用等方面權利的限制
  • 行為之間是否有層級和依賴關係,是怎麼樣的依賴關係

關於關聯關係

  • 是一對一還是一對多,如果有父子層級之分,是繼承關係還是獨立存在。

這是概念層的問題,具體到工作的設計當中,用於梳理需求會有一些幫助,主要還是用於梳理基礎概念。

一句話概括就是:許可權系統維護的是人和可進行行為的關聯關係。

那麼系統的每個使用者可以看做是一堆可以進行的行為的集合。

這句話有點不好理解的話,你就按照使用者畫像那麼理解,在許可權系統裡,每個使用者身上打滿了一堆可以進行行為的標籤。



那麼許可權控制系統的原理呢?其實很簡單,就是:使用者在訪問時,通過了解使用者具有的可以進行的行為的集合,決定使用者可以看到什麼選單,以及在什麼選單下能使用什麼功能,並且具備什麼樣操作資料的能力。

瞭解完概念,那麼在動手之前,是瞭解清楚需求及目前的解決方案。比如:現在都有什麼型別的使用者?每個型別的使用者在使用功能上有什麼區分?現在一級選單和二級選單都有哪些?每個頁面上面通用的和需要控制的功能都有什麼?哪些資料的讀寫需要根據使用者身份做區分?PS:大部分沒有許可權控制之前,很多許可權控制是寫死在程式碼裡了,需要梳理清楚,避免踩坑。

好了,其實回答完以上問題,應該能瞭解自己或公司對許可權系統的基本需求了,按照我的習慣,就可以著手開始寫use case了。

具體的情況,具體分析,最大的難點在於對現有情況的瞭解,瞭解清楚現有情況,其實設計難度不大。

轉載連結:https://www.zhihu.com/question/20313385/answer/118095995
來源:知乎