一.引言
因為做過的一些系統(tǒng)的權(quán)限管理的功能雖然在逐步完善,但總有些不盡人意的地方,總想抽個時間來更好的思考一下權(quán)限系統(tǒng)的設(shè)計。
權(quán)限系統(tǒng)一直以來是我們應(yīng)用系統(tǒng)不可缺少的一個部分,若每個應(yīng)用系統(tǒng)都重新對系統(tǒng)的權(quán)限進(jìn)行設(shè)計,以滿足不同系統(tǒng)用戶的需求,將會浪費我們不少寶貴時間,所以花時間來設(shè)計一個相對通用的權(quán)限系統(tǒng)是很有意義的。
二.設(shè)計目標(biāo)
設(shè)計一個靈活、通用、方便的權(quán)限管理系統(tǒng)。
在這個系統(tǒng)中,我們需要對系統(tǒng)的所有資源進(jìn)行權(quán)限控制,那么系統(tǒng)中的資源包括哪些呢?我們可以把這些資源簡單概括為靜態(tài)資源(功能操作、數(shù)據(jù)列)和動態(tài)資源(數(shù)據(jù)),也分別稱為對象資源和數(shù)據(jù)資源,后者是我們在系統(tǒng)設(shè)計與實現(xiàn)中的叫法。
系統(tǒng)的目標(biāo)就是對應(yīng)用系統(tǒng)的所有對象資源和數(shù)據(jù)資源進(jìn)行權(quán)限控制,比如應(yīng)用系統(tǒng)的功能菜單、各個界面的按鈕、數(shù)據(jù)顯示的列以及各種行級數(shù)據(jù)進(jìn)行權(quán)限的操控。
三.相關(guān)對象及其關(guān)系
大概理清了一下權(quán)限系統(tǒng)的相關(guān)概念,如下所示:
1. 權(quán)限
系統(tǒng)的所有權(quán)限信息。權(quán)限具有上下級關(guān)系,是一個樹狀的結(jié)構(gòu)。下面來看一個例子
系統(tǒng)管理
用戶管理
查看用戶
新增用戶
修改用戶
刪除用戶
對于上面的每個權(quán)限,又存在兩種情況,一個是只是可訪問,另一種是可授權(quán),例如對于“查看用戶”這個權(quán)限,如果用戶只被授予“可訪問”,那么他就不能將他所具有的這個權(quán)限分配給其他人。
2. 用戶
應(yīng)用系統(tǒng)的具體操作者,用戶可以自己擁有權(quán)限信息,可以歸屬于0~n個角色,可屬于0~n個組。他的權(quán)限集是自身具有的權(quán)限、所屬的各角色具有的權(quán)限、所屬的各組具有的權(quán)限的合集。它與權(quán)限、角色、組之間的關(guān)系都是n對n的關(guān)系。
3. 角色
為了對許多擁有相似權(quán)限的用戶進(jìn)行分類管理,定義了角色的概念,例如系統(tǒng)管理員、管理員、用戶、訪客等角色。角色具有上下級關(guān)系,可以形成樹狀視圖,父級角色的權(quán)限是自身及它的所有子角色的權(quán)限的綜合。父級角色的用戶、父級角色的組同理可推。
4. 組
為了更好地管理用戶,對用戶進(jìn)行分組歸類,簡稱為用戶分組。組也具有上下級關(guān)系,可以形成樹狀視圖。在實際情況中,我們知道,組也可以具有自己的角色信息、權(quán)限信息。這讓我想到我們的QQ用戶群,一個群可以有多個用戶,一個用戶也可以加入多個群。每個群具有自己的權(quán)限信息。例如查看群共享。QQ群也可以具有自己的角色信息,例如普通群、高級群等。
針對上面提出的四種類型的對象,讓我們通過圖來看看他們之間的關(guān)系。

有上圖中可以看出,這四者的關(guān)系很復(fù)雜,而實際的情況比這個圖還要復(fù)雜,權(quán)限、角色、組都具有上下級關(guān)系,權(quán)限管理是應(yīng)用系統(tǒng)中比較棘手的問題,要設(shè)計一個通用的權(quán)限管理系統(tǒng),工作量也著實不小。
當(dāng)然對于有些項目,權(quán)限問題并不是那么復(fù)雜。有的只需要牽涉到權(quán)限和用戶兩種類型的對象,只需要給用戶分配權(quán)限即可。
在另一些情況中,引入了角色對象,例如基于角色的權(quán)限系統(tǒng), 只需要給角色分配權(quán)限,用戶都隸屬于角色,不需要單獨為用戶分配角色信息。
在下一篇中,我們將講述權(quán)限管理的數(shù)據(jù)庫設(shè)計等內(nèi)容。
歡迎各位拍磚或給出寶貴意見。
參考文章:應(yīng)用程序權(quán)限設(shè)計
心情小站——權(quán)限相關(guān)
posted on 2007-09-29 11:26
阿蜜果 閱讀(25911)
評論(22) 編輯 收藏 所屬分類:
Open Source