設計一款后台產品時,用戶角色權限控制是最常遇到的問題,本文以最簡單最基本菜單權限設計實現,采用具體案例來說明權限設計應該怎么實現。
原始需求:A企業有員工四名,分別是總裁張三、經理李四、員工王五和肖六,為A公司設計一款后台系統,要求每個員工看到的菜單選項不一致。
1.權限的作用意義
顧名思義,“權”代表“權力”,划分了系統的職權,不同的用戶擁有不同的權力划分;“限”代表“限制”,在權力划分的基礎上對職能范圍進行了限制,本文所述的權限相對簡單,賦予不同角色看到不同菜單的權限。
權限控制能較好地解決系統安全問題,避免公司機密資料外泄,同時,不同部門使用系統時互不干擾,因此被企業廣泛應用。
2.梳理用戶、角色的概念
(1)用戶
用戶是指系統的登錄用戶,可以理解為一系列的人員,例如登錄用戶為張三、李四、王五和肖六這幾個人。
(2)角色
角色指用戶在系統中擔任的角色,是系統賦予用戶的頭銜,例如A公司后台系統角色可以定義為:總裁、經理、員工。
3.選擇合適的權限模型
(1)傳統的權限模型
在早期,傳統的權限模型就是為用戶分配菜單權限,例如張三看到A、B、C菜單,李四看到B、C菜單,王五和肖六看到A、B、C菜單,這種傳統的權限模型簡單粗暴,直接為用戶分配菜單即可,但是隨着公司員工激增,在動則數百人的公司里,沒一個員工都要分配一次,顯然效率太低。
並且,在進行交互設計時,定義數百名用戶擁有的菜單權限,那需要寫數百行的表格。

(2)RBAC權限模型
RBAC,即基於角色的訪問控制(Role-Based Access Control),是優秀的權限控制模型,主要通過角色和權限建立管理,再賦予用戶不同的角色,來實現權限控制的目標。
利用該模型來配置權限,直接優點是角色的數量比用戶的數量更少,先把權限賦予角色,即可完成權限的分配;再為用戶分配相應的角色,即可直接獲得角色擁有的權限。
交互設計的福音,只需定義有限的角色擁有哪些菜單權限即可。

(3)模型其他注意事項
在選擇第二種RBAC權限模型時,需要注意,用戶——角色——權限之間並非是一對一的對應關系,例如,一個用戶可以擁有多種角色,一個角色也可以擁有多個權限,所以應該是多對多的關系,需要和開發說明清楚。

4.菜單實現效果
如圖所示,通過權限控制后,不同用戶登錄進去看到的菜單顯示都不一致,基於角色來進行菜單展示。
(1)總裁角色,菜單A、B、C

(2)經理角色,菜單B、C

(2)員工角色,菜單C
