1. 概念說明
A 系統級權限:從角色的角度出發,不特定于任何實際的資源的權限。比如“用戶是否可以修改標題”這個權限,不針對于任何特定的標題。權限賦予給某個特定的角色。采用RBAC模型實現
B 對象級權限:從對象實例的角度出發。比如針對于某個特定的標題,編輯在這個標題上的權限。采用ACL模型實現。
1) 用戶所屬的角色是否擁有“修改標題”的權限
2) 用戶或者用戶組是否在某條標題的的ACL列表當中
2. RBAC權限部分的表結構說明
1)系統權限(Permission)
系統權限列表
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,系統權限id |
name |
varchar |
名稱 |
2) 角色(Role)
角色表
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,角色id |
name |
varchar |
名稱 |
3) 授權(authorities)
給某個角色授予多項系統級權限
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,id |
roleid |
bigint |
角色id |
permissionid |
bigint |
權限id |
4) 用戶組成員(memeberships)
用戶組以及用戶組成員
名稱 |
定義 |
說明 |
id |
bigint |
主鍵,用戶id |
groupid |
bigint |
用戶組id |
userid |
bigint | 用戶id |
roleid |
bigint |
角色id |
3. RBAC權限部分的關系說明
用戶和角色:用戶和角色是多對多的關系。但是在授予某個用戶某個角色的時候,是以用戶組為單位的。比如用戶A在用戶組1中可能是“管理員”的角色,但是在用戶組2中就可能是“普通用戶”的角色。這種劃分在業務系統中比較通用。當然,具體到一個用戶,使用哪個用戶組的角色來做判斷,是由業務來決定的。
角色和系統級權限:是一個一對多的關系。通過授權來完成。當然在授權之前,需要把需要使用的系統及權限注射到數據庫的permission表。
(夜露死苦)