基於資源的許可權系統-資料庫設計
阿新 • • 發佈:2019-02-16
概述
本通用許可權管理系統是基於2棵樹來做許可權管理的,這2棵樹就是 資源樹 和 組織樹
組織+資源+動作 所組成的許可權資料就是整個系統的核心。 這裡之所以只用組織而不用人員,一方面可以減少許可權資料的量,一方面還可以簡化許可權資料。
每個人員的的許可權是可以計算出來的。 人員從屬於一個或者多個組織的,預設情況下所有人員都有一個根組織,許可權資料為了保持簡單,只儲存組織的許可權。
表結構設計
概略圖
真正在許可權系統中的資料只要 Permission,Rule,Action 3張表就夠了。
User,Group,Resource 的資料可以放在許可權中,也可以和既有的系統對接,既有的系統提供API,能夠讓許可權訪問到User,Group,Resource的資訊即可。
表設計
本系統希望最後以服務的形式提供許可權管理的功能,所以每張表沒有多餘的欄位,只有許可權管理必需的一些欄位。 關於 人員,組織,資源 的冗餘資訊應該在各自的系統中查詢和錄入。
許可權表(Permission)
field name | field type | comment |
---|---|---|
Id | string | 許可權ID |
ActionId | string | 動作ID |
GroupId | string | 組織ID |
ResourceId | string | 資源ID |
動作表(Action)
field name | field type | comment |
---|---|---|
Id | string | 動作ID |
Name | string | 動作名稱 |
Description | string | 動作描述 |
規則表(暫略)
人員表(User)
field name | field type | comment |
---|---|---|
Id | string | 使用者ID |
Name | string | 使用者名稱 |
Password | string | 密碼 |
string | 郵件地址 |
組織表(Group)
field name | field type | comment |
---|---|---|
Id | string | 組織ID |
ParentId | string | 父組織ID |
Name | string | 組織名稱 |
Description | string | 組織描述 |
使用者-組織關聯表(UserGroupRel)
field name | field type | comment |
---|---|---|
Id | string | 使用者組織關係ID |
UserId | string | 使用者ID |
GroupId | string | 組織ID |
資源表(Resource)
field name | field type | comment |
---|---|---|
Id | string | 資源ID |
ParentId | string | 父資源ID |
Name | string | 資源名稱 |
Description | string | 資源描述 |
許可權規則
許可權規則會以外掛的形式加入許可權驗證的過程中,其目的就是讓許可權管理系統更加靈活,更加的通用。
關於許可權規則的定義和解析,以後再單獨介紹。
沒有許可權規則,整個許可權管理系統也可以正常執行,使用。
總結
許可權功能幾乎是每個系統都需要的功能,也是每個系統中比較麻煩的一個模組,不僅測試麻煩,而且一般對其他的業務侵入比較多。
本許可權系統的資料結構很簡單,以許可權資料為核心,加上與之關聯的一些表,先將基本的許可權服務提供出來。