權(quán)限系統(tǒng)設(shè)計(jì)

我們比較常見(jiàn)的就是基于角色的訪問(wèn)控制,用戶通過(guò)角色與權(quán)限進(jìn)行關(guān)聯(lián)士鸥。簡(jiǎn)單地說(shuō)闲孤,一個(gè)用戶擁有多個(gè)角色,一個(gè)角色擁有多個(gè)權(quán)限烤礁。這樣讼积,就構(gòu)造成“用戶-角色-權(quán)限”的授權(quán)模型。在這種模型中脚仔,用戶與角色之間勤众、角色與權(quán)限之間,通常都是多對(duì)多的關(guān)系鲤脏。如下圖:

image

基于這個(gè)决摧,得先了解角色到底是什么?我們可以理解它為一定數(shù)量的權(quán)限的集合凑兰,是一個(gè)權(quán)限的載體掌桩。

例如:一個(gè)論壇的“管理員”、“版主”姑食,它們都是角色波岛。但是所能做的事情是不完全一樣的,版主只能管理版內(nèi)的貼子音半,用戶等则拷,而這些都是屬于權(quán)限,如果想要給某個(gè)用戶授予這些權(quán)限曹鸠,不用直接將權(quán)限授予用戶煌茬,只需將“版主”這個(gè)角色賦予該用戶即可。

但是通過(guò)上面我們也發(fā)現(xiàn)問(wèn)題了彻桃,如果用戶的數(shù)量非常大的時(shí)候坛善,就需要給系統(tǒng)的每一個(gè)用戶逐一授權(quán)(分配角色),這是件非常繁瑣的事情,這時(shí)就可以增加一個(gè)用戶組眠屎,每個(gè)用戶組內(nèi)有多個(gè)用戶剔交,除了給單個(gè)用戶授權(quán)外,還可以給用戶組授權(quán)改衩,這樣一來(lái)岖常,通過(guò)一次授權(quán),就可以同時(shí)給多個(gè)用戶授予相同的權(quán)限葫督,而這時(shí)用戶的所有權(quán)限就是用戶個(gè)人擁有的權(quán)限與該用戶所在組所擁有的權(quán)限之和竭鞍。用戶組、用戶與角色三者的關(guān)聯(lián)關(guān)系如下圖:

image

通常在應(yīng)用系統(tǒng)里面的權(quán)限我們把它表現(xiàn)為菜單的訪問(wèn)(頁(yè)面級(jí))橄镜、功能模塊的操作(功能級(jí))笼蛛、文件上傳的刪改,甚至頁(yè)面上某個(gè)按鈕蛉鹿、圖片是否可見(jiàn)等等都屬于權(quán)限的范疇滨砍。有些權(quán)限設(shè)計(jì),會(huì)把功能操作作為一類妖异,而把文件惋戏、菜單、頁(yè)面元素等作為另一類他膳,這樣構(gòu)成“用戶-角色-權(quán)限-資源”的授權(quán)模型响逢。而在做數(shù)據(jù)表建模時(shí),可把功能操作和資源統(tǒng)一管理棕孙,也就是都直接與權(quán)限表進(jìn)行關(guān)聯(lián)舔亭,這樣可能更具便捷性和易擴(kuò)展性。如下圖:

image

這里特別需要注意以下權(quán)限表中有一列“PowerType(權(quán)限類型)”蟀俊,我們根據(jù)它的取值來(lái)區(qū)分是哪一類權(quán)限钦铺,可以把它理解為一個(gè)枚舉,如“MENU”表示菜單的訪問(wèn)權(quán)限肢预、“OPERATION”表示功能模塊的操作權(quán)限矛洞、“FILE”表示文件的修改權(quán)限、“ELEMENT”表示頁(yè)面元素的可見(jiàn)性控制等烫映。

這樣設(shè)計(jì)的好處有兩個(gè):

一沼本、不需要區(qū)分哪些是權(quán)限操作,哪些是資源锭沟,(實(shí)際上抽兆,有時(shí)候也不好區(qū)分,如菜單族淮,把它理解為資源呢還是功能模塊權(quán)限呢辫红?)凭涂;

二、方便擴(kuò)展厉熟,當(dāng)系統(tǒng)要對(duì)新的東西進(jìn)行權(quán)限控制時(shí),我只需要建立一個(gè)新的關(guān)聯(lián)表“權(quán)限XX關(guān)聯(lián)表”较幌,并確定這類權(quán)限的權(quán)限類型字符串即可揍瑟。

需要注意的是,權(quán)限表與權(quán)限菜單關(guān)聯(lián)表乍炉、權(quán)限菜單關(guān)聯(lián)表與菜單表都是一對(duì)一的關(guān)系绢片。(文件、頁(yè)面權(quán)限點(diǎn)岛琼、功能操作等同理)底循。也就是每添加一個(gè)菜單,就得同時(shí)往這三個(gè)表中各插入一條記錄槐瑞。

這樣熙涤,可以不需要權(quán)限菜單關(guān)聯(lián)表,讓權(quán)限表與菜單表直接關(guān)聯(lián)困檩,此時(shí)祠挫,須在權(quán)限表中新增一列用來(lái)保存菜單的ID,權(quán)限表通過(guò)“權(quán)限類型”和這個(gè)ID來(lái)區(qū)分是種類型下的哪條記錄悼沿。最后擴(kuò)展出來(lái)的模型完整設(shè)計(jì)如下圖:

image

注意上面我額外增加了一個(gè)操作日志表等舔;

隨著系統(tǒng)的日益龐大,為了方便管理糟趾,如果有需要可引入角色組對(duì)角色進(jìn)行分類管理慌植,跟用戶組不同,角色組不參與授權(quán)义郑。

例如:當(dāng)遇到有多個(gè)子公司蝶柿,每個(gè)子公司下有多個(gè)部門(mén),這是我們就可以把部門(mén)理解為角色非驮,子公司理解為角色組只锭,角色組不參于權(quán)限分配。另外院尔,為方便上面各主表自身的管理與查找蜻展,可采用樹(shù)型結(jié)構(gòu),如菜單樹(shù)邀摆、功能樹(shù)等纵顾,當(dāng)然這些可不需要參于權(quán)限分配。

數(shù)據(jù)字典:

1.用戶表:

image

2.角色表:

image

3.用戶與角色關(guān)聯(lián)表

image

4.用戶組表

image

5.用戶組與用戶信息關(guān)聯(lián)表

image

6.用戶組與角色關(guān)聯(lián)表

image

7.菜單表

image

8.頁(yè)面元素表

image

9.文件表

image

10.權(quán)限表

image

11.權(quán)限與菜單關(guān)聯(lián)表

image

12.權(quán)限與頁(yè)面元素關(guān)聯(lián)表

image

13.權(quán)限與文件關(guān)聯(lián)表

image

14.功能操作表

image

15.權(quán)限與功能操作關(guān)聯(lián)表

image

16.角色與權(quán)限關(guān)聯(lián)表

image

17.操作日志表

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栋盹,一起剝皮案震驚了整個(gè)濱河市施逾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖汉额,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曹仗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蠕搜,警方通過(guò)查閱死者的電腦和手機(jī)怎茫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)妓灌,“玉大人轨蛤,你說(shuō)我怎么就攤上這事〕婀。” “怎么了祥山?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)掉伏。 經(jīng)常有香客問(wèn)我缝呕,道長(zhǎng),這世上最難降的妖魔是什么斧散? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任岳颇,我火速辦了婚禮,結(jié)果婚禮上颅湘,老公的妹妹穿的比我還像新娘话侧。我一直安慰自己,他們只是感情好闯参,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布瞻鹏。 她就那樣靜靜地躺著,像睡著了一般鹿寨。 火紅的嫁衣襯著肌膚如雪新博。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天脚草,我揣著相機(jī)與錄音赫悄,去河邊找鬼。 笑死馏慨,一個(gè)胖子當(dāng)著我的面吹牛埂淮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播写隶,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼倔撞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了慕趴?” 一聲冷哼從身側(cè)響起痪蝇,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鄙陡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后躏啰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體趁矾,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年给僵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毫捣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡想际,死狀恐怖培漏,靈堂內(nèi)的尸體忽然破棺而出溪厘,到底是詐尸還是另有隱情胡本,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布畸悬,位于F島的核電站侧甫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蹋宦。R本人自食惡果不足惜披粟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冷冗。 院中可真熱鬧守屉,春花似錦、人聲如沸蒿辙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)思灌。三九已至俺叭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泰偿,已是汗流浹背熄守。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耗跛,地道東北人裕照。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像调塌,于是被迫代替她去往敵國(guó)和親牍氛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348