通用許可權管理設計篇(一)

2021-08-29 13:19:05 字數 1653 閱讀 4095

一.引言因為做過的一些系統的許可權管理的功能雖然在逐步完善,但總有些不盡人意的地方,總想抽個時間來更好的思考一下許可權系統的設計。

許可權系統一直以來是我們應用系統不可缺少的乙個部分,若每個應用系統都重新對系統的許可權進行設計,以滿足不同系統使用者的需求,將會浪費我們不少寶貴時間,所以花時間來設計乙個相對通用的許可權系統是很有意義的。

二.設計目標

設計乙個靈活、通用、方便的許可權管理系統。

在這個系統中,我們需要對系統的所有資源進行許可權控制,那麼系統中的資源包括哪些呢?我們可以把這些資源簡單概括為靜態資源(功能操作、資料列)和動態資源(資料),也分別稱為物件資源資料資源,後者是我們在系統設計與實現中的叫法。

系統的目標就是對應用系統的所有物件資源和資料資源進行許可權控制,比如應用系統的功能選單、各個介面的按鈕、資料顯示的列以及各種行級資料進行許可權的操控。

三.相關物件及其關係

1.許可權

系統的所有許可權資訊。許可權具有上下級關係,是乙個樹狀的結構。下面來看乙個例子

系統管理

使用者管理

檢視使用者

新增使用者

修改使用者

刪除使用者

對於上面的每個許可權,又存在兩種情況,乙個是只是可訪問,另一種是可授權,例如對於「檢視使用者」這個許可權,如果使用者只被授予「可訪問」,那麼他就不能將他所具有的這個許可權分配給其他人。

2.使用者

應用系統的具體操作者,使用者可以自己擁有許可權資訊,可以歸屬於0~n個角色,可屬於0~n個組。他的許可權集是自身具有的許可權、所屬的各角色具有的許可權、所屬的各組具有的許可權的合集。它與許可權、角色、組之間的關係都是n對n的關係。

3.角色

為了對許多擁有相似許可權的使用者進行分類管理,定義了角色的概念,例如系統管理員、管理員、使用者、訪客等角色。角色具有上下級關係,可以形成樹狀檢視,父級角色的許可權是自身及它的所有子角色的許可權的綜合。父級角色的使用者、父級角色的組同理可推。

4.

為了更好地管理使用者,對使用者進行分組歸類,簡稱為使用者分組。組也具有上下級關係,可以形成樹狀檢視。在實際情況中,我們知道,組也可以具有自己的角色資訊、許可權資訊。這讓我想到我們的qq使用者群,乙個群可以有多個使用者,乙個使用者也可以加入多個群。每個群具有自己的許可權資訊。例如檢視群共享。qq群也可以具有自己的角色資訊,例如普通群、高階群等。

針對上面提出的四種型別的物件,讓我們通過圖來看看他們之間的關係。

有上圖中可以看出,這四者的關係很複雜,而實際的情況比這個圖還要複雜,許可權、角色、組都具有上下級關係,許可權管理是應用系統中比較棘手的問題,要設計乙個通用的許可權管理系統,工作量也著實不小。

當然對於有些專案,許可權問題並不是那麼複雜。有的只需要牽涉到許可權和使用者兩種型別的物件,只需要給使用者分配許可權即可。

在另一些情況中,引入了角色物件,例如基於角色的許可權系統, 只需要給角色分配許可權,使用者都隸屬於角色,不需要單獨為使用者分配角色資訊。

心情小站——許可權相關

通用許可權管理設計篇(一)

一 引言 因為做過的一些系統的許可權管理的功能雖然在逐步完善,但總有些不盡人意的地方,總想抽個時間來更好的思考一下許可權系統的設計。許可權系統一直以來是我們應用系統不可缺少的乙個部分,若每個應用系統都重新對系統的許可權進行設計,以滿足不同系統使用者的需求,將會浪費我們不少寶貴時間,所以花時間來設計乙...

通用許可權管理系統設計篇(一)

一 引言因為做過的一些系統的許可權管理的功能雖然在逐步完善,但總有些不盡人意的地方,總想抽個時間來更好的思考一下許可權系統的設計。許可權系統一直以來是我們應用系統不可缺少的乙個部分,若每個應用系統都重新對系統的許可權進行設計,以滿足不同系統使用者的需求,將會浪費我們不少寶貴時間,所以花時間來設計乙個...

通用許可權管理設計

最近又碰到了許可權的分配和管理,需要單獨設計一套結構。其實以前有了很多的這方面的設計和博文,在園子裡面的找找看就會找到n頁的結果。這裡也不敢說是新思路吧,權當是自己的總結和留個腳印吧,方便查詢。通用在這裡有兩個概念 1 為了吸引眼球 一看到是通用就要點開看看究竟,當然了,結果無非是幾種,有人罵,有人...