ABP開發(fā)框架前后端開發(fā)系列---(9)ABP框架的權(quán)限控制管理

在前面兩篇隨筆《ABP開發(fā)框架前后端開發(fā)系列---(7)系統(tǒng)審計(jì)日志和登錄日志的管理》和《ABP開發(fā)框架前后端開發(fā)系列---(8)ABP框架之Winform界面的開發(fā)過程》開始介紹了權(quán)限管理的內(nèi)容,其中只是列出了內(nèi)部的權(quán)限系統(tǒng)的審計(jì)和登陸信息何暇,以及對(duì)Winform界面的整合陶夜,本篇隨筆繼續(xù)介紹ABP開發(fā)框架的權(quán)限控制管理內(nèi)容,包括用戶裆站、角色条辟、機(jī)構(gòu)、權(quán)限等方面宏胯,以及該框架在Winform方面的應(yīng)用集成羽嫡。

1、ABP框架的權(quán)限控制管理內(nèi)容

我們知道胳嘲,權(quán)限管理一般都會(huì)涉及到用戶厂僧、組織機(jī)構(gòu)、角色了牛,以及權(quán)限功能等方面的內(nèi)容颜屠,ABP框架的基礎(chǔ)內(nèi)容也是涉及到這幾方面的內(nèi)容,其中它們之間的關(guān)系基本上是多對(duì)多的關(guān)系鹰祸,它們的關(guān)系如下所示甫窟。

image

不過在官網(wǎng)下載的框架里面,包含權(quán)限管理這些應(yīng)用服務(wù)層和展示層的內(nèi)容并不完整蛙婴,只是簡(jiǎn)單的包括了用戶和角色的基礎(chǔ)管理粗井,而且很多權(quán)限管理所需要的基礎(chǔ)功能并沒有提供。

根據(jù)ABP框架提供的基礎(chǔ)數(shù)據(jù)庫(kù)表街图,我們可以進(jìn)一步整理權(quán)限管理幾個(gè)重要概念和真實(shí)數(shù)據(jù)庫(kù)表之間的對(duì)應(yīng)關(guān)系浇衬,基于這個(gè)基礎(chǔ)上,我們可以完善整個(gè)權(quán)限管理模塊內(nèi)容餐济。

image

上圖是ABP基礎(chǔ)框架中權(quán)限模塊里面包含的一些主對(duì)象表和中間表耘擂,中間表主要用來存儲(chǔ)兩個(gè)對(duì)象之間的多對(duì)多關(guān)系,如角色包含多個(gè)用戶絮姆,用戶屬于多個(gè)機(jī)構(gòu)醉冤,機(jī)構(gòu)包含多個(gè)角色等等秩霍。

2、基于ABP框架的權(quán)限管理模塊

**1)組織機(jī)構(gòu)管理 **

組織機(jī)構(gòu)主要就是一個(gè)層級(jí)的對(duì)象關(guān)系蚁阳,一般包含但不限于公司铃绒、部門、工作組等的定義螺捐,其中組織機(jī)構(gòu)包含用戶成員和角色成員的關(guān)系颠悬,如下界面所示。

image

組織機(jī)構(gòu)包含的成員可以添加多個(gè)人員記錄归粉,添加界面如下所示椿疗。

image

添加角色界面如下所示。

image

** 2)角色管理**

角色信息沒有層級(jí)關(guān)系糠悼,可以通過列表展示。

image

其中角色包含權(quán)限分配和角色成員的維護(hù)浅乔,如下是角色編輯界面倔喂,包含角色基本信息、權(quán)限靖苇、成員管理等席噩。

image

角色的權(quán)限包含系統(tǒng)可以用的權(quán)限,并可以勾選為角色設(shè)置所需的功能點(diǎn)贤壁,如下界面所示悼枢。

image

用戶成員則和機(jī)構(gòu)的用戶管理一樣,可以指定多個(gè)用戶脾拆。

3)用戶管理

用戶管理只需要管理用戶基本的信息即可馒索,我們?nèi)绻枰峙浣巧梢栽诮巧芾砝锩娼y(tǒng)一處理。當(dāng)然名船,創(chuàng)建用戶的時(shí)候绰上,也可以ABP框架的收費(fèi)版本界面一樣,為用戶指定角色和機(jī)構(gòu)信息渠驼。

我這里主要是維護(hù)用戶信息即可蜈块,用戶列表界面如下所示。

image

用戶編輯或者查看界面迷扇,除了可以看用戶基礎(chǔ)信息外百揭,可以查看用戶包所屬的機(jī)構(gòu)(多個(gè)),或者所屬的角色(多個(gè))

image

當(dāng)然可以查看這個(gè)用戶本身?yè)碛械臋?quán)限功能點(diǎn)蜓席,如下界面所示器一。

image

4)權(quán)限功能

嚴(yán)格來說,ABP框架并沒有統(tǒng)一管理好權(quán)限功能點(diǎn)的瓮床,它沒有任何表來存儲(chǔ)這個(gè)功能集合盹舞,而是通過派生AuthorizationProvider的子類來定義權(quán)限功能點(diǎn)产镐,這種需要通過指定AuthorizationProvider的子類的方式創(chuàng)建功能點(diǎn),需要每次系統(tǒng)模塊增加功能點(diǎn)的時(shí)候踢步,編碼一下癣亚,然后增加自己的功能點(diǎn),如下界面所示获印。

image

這種方式可能能夠滿足大多數(shù)的需要述雾,不過我如果需要增量開發(fā),或者動(dòng)態(tài)增加某些功能點(diǎn)的時(shí)候兼丰,就有點(diǎn)不方便了玻孟。

我在這個(gè)基礎(chǔ)上引入了一個(gè)權(quán)限功能的表用來存儲(chǔ)功能點(diǎn)的,然后提供管理界面來動(dòng)態(tài)維護(hù)這些功能點(diǎn)鳍征。如下界面所示黍翎。

image

這樣我可以動(dòng)態(tài)添加或者批量添加所需要的功能點(diǎn),并且和整個(gè)權(quán)限管理模塊串聯(lián)起來艳丛,形成一個(gè)完整的控制體系匣掸。

image

這些概念主要還是來源于我的Winform開發(fā)框架和混合式開發(fā)框架里面的控制思路,以及界面展示的處理氮双。

這樣我們就可以管理自己的權(quán)限功能點(diǎn)碰酝,并可以為指定的角色配置相關(guān)的控制功能點(diǎn),如下表所示是角色的權(quán)限集合(系統(tǒng)中間表)戴差,也就是給角色分配的功能點(diǎn)送爸,依舊是在原來的系統(tǒng)表里面存儲(chǔ)。

image

3暖释、權(quán)限控制在業(yè)務(wù)模塊界面中的使用

我們擁有了用戶袭厂、角色、機(jī)構(gòu)饭入、權(quán)限功能以及它們之間的關(guān)系后嵌器,我們可以按照一個(gè)完善的權(quán)限系統(tǒng)來創(chuàng)建對(duì)應(yīng)的用戶角色權(quán)限關(guān)系,并通過在客戶端對(duì)界面權(quán)限的判斷和服務(wù)端對(duì)操作權(quán)限的判斷谐丢,實(shí)現(xiàn)完整的控制處理爽航。

服務(wù)端由ABP框架內(nèi)置權(quán)限進(jìn)行管理,通過在AppService里面定義好增刪改查等權(quán)限點(diǎn)乾忱,如引用服務(wù)層的基類設(shè)置了幾個(gè)權(quán)限點(diǎn)的屬性讥珍。

image

我們?cè)谧宇惱锩嬷付ㄟ@些操作的變量即可,如產(chǎn)品應(yīng)用服務(wù)中窄瘟,我們可以定義CreatePermissionName為 Product/Add 這樣的名稱衷佃,當(dāng)然也可以自定義。

然后每次在Action中調(diào)用相應(yīng)的檢查即可蹄葱,如下是對(duì)創(chuàng)建的判斷檢查氏义。

image

或者更新操作的權(quán)限檢查

image

如果對(duì)于導(dǎo)入锄列、導(dǎo)出等其他權(quán)限,我們則可以通過調(diào)用

<pre style="margin: 0px 0px 0px 22px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px !important; font-family: "Courier New" !important;">void CheckPermission(string permissionName);</pre>

來進(jìn)行自己自定義權(quán)限名稱的判斷惯悠。

在客戶端邻邮,我們登錄成功后,獲取用戶的權(quán)限集合克婶,然后在客戶端進(jìn)行判斷即可進(jìn)行權(quán)限的控制管理筒严,可以控制菜單、按鈕等界面元素情萤,如下是整合了權(quán)限控制的產(chǎn)品信息管理界面鸭蛙。

分頁(yè)列表展示界面的控制代碼如下所示。

image

編輯或者查看界面的控制代碼如下所示

image

這樣我們 就可以整合了權(quán)限到業(yè)務(wù)管理模塊里面筋岛,實(shí)現(xiàn)對(duì)菜單娶视、按鈕等元素的權(quán)限控制了。

首先在權(quán)限管理系統(tǒng)模塊里面為用戶角色添加對(duì)應(yīng)的產(chǎn)品管理權(quán)限點(diǎn)泉蝌。

image

產(chǎn)品信息界面展示如下所示歇万。

image
image

如果在權(quán)限模塊的角色里面取消對(duì)應(yīng)的功能點(diǎn),那么產(chǎn)品管理功能不可用勋陪。

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市硫兰,隨后出現(xiàn)的幾起案子诅愚,更是在濱河造成了極大的恐慌,老刑警劉巖劫映,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件违孝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泳赋,警方通過查閱死者的電腦和手機(jī)雌桑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祖今,“玉大人校坑,你說我怎么就攤上這事∏埽” “怎么了耍目?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)徐绑。 經(jīng)常有香客問我邪驮,道長(zhǎng),這世上最難降的妖魔是什么傲茄? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任毅访,我火速辦了婚禮沮榜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喻粹。我一直安慰自己蟆融,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布磷斧。 她就那樣靜靜地躺著振愿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弛饭。 梳的紋絲不亂的頭發(fā)上冕末,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音侣颂,去河邊找鬼档桃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛憔晒,可吹牛的內(nèi)容都是我干的藻肄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼拒担,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嘹屯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起从撼,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤州弟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后低零,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婆翔,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年掏婶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啃奴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雄妥,死狀恐怖最蕾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茎芭,我是刑警寧澤揖膜,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站梅桩,受9級(jí)特大地震影響壹粟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一趁仙、第九天 我趴在偏房一處隱蔽的房頂上張望洪添。 院中可真熱鬧,春花似錦雀费、人聲如沸干奢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忿峻。三九已至,卻和暖如春辕羽,著一層夾襖步出監(jiān)牢的瞬間逛尚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工刁愿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绰寞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓铣口,卻偏偏與公主長(zhǎng)得像滤钱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脑题,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容