一、權限管理模型的必要性:
a. 安全性:防止誤操作,防止數據泄露,保證信息的安全。
b. 數據隔離:保持不同的角色具有不同的權限,只能看到自己權限范圍內的數據
二、權限管理模型的發展:
a. 傳統的權限管理:隨着用戶數量的增大和用戶權限區別的增大,傳統的權限管理需要針對每個用戶依次管理,成本較高。
b. RBAC:Role-Based Access Control 用戶-角色-權限,權限與角色相關聯,用戶與角色相關聯,通過對用戶賦予相應的角色,再去獲取相應的權限,從而實現了用戶與權限的解耦,具有很好的擴展性和通用性。
三、RBAC的三個原則:
a. 最小特權原則:即通過對每個角色賦予相應的權限,通過對每個用戶賦予相應的角色,從而實現給用戶分配相應的權限,保證該權限不超過該用戶完成其任務所需要的權限即可。
b. 責任分離原則:指的是針對敏感任務,分配兩個責任上相互制約的兩個角色,比如針對財務管理員和會計。
c. 數據抽象原則:主要是通過抽象許可權來實現。比如財務上的信用等抽象許可權。
四、RBAC的數據庫設計
a. 用戶表
b. 角色表
c. 權限表
d. 用戶角色表
e. 角色權限表
五、基於RBAC的實現流程
a. 首先針對權限的校驗的業務邏輯在一個父類中實現,其余子類均需要實現該父類,從而實現針對用戶的權限的控制。
b. 用戶訪問時,首先查詢用戶表判斷用戶的狀態是否是可用。
c. 然后根據用戶 id查詢 用戶角色表,得到用戶的角色id
d. 根據角色 id 查詢 權限角色表,得到該用戶在該角色下的權限id
e. 根據權限 id 查詢 權限表,得到該用戶在該角色下的權限。
六、主流的權限管理框架
a. Spring Security
b. Apache Shiro