日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

發(fā)布時(shí)間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在前面兩篇隨筆《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)系如下所示。

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

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

上圖是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)系,如下界面所示。

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

添加角色界面如下所示。

?

?2)角色管理

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

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

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

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

3)用戶管理

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

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

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

當(dāng)然可以查看這個(gè)用戶本身擁有的權(quán)限功能點(diǎn),如下界面所示。

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),如下界面所示。

這種方式可能能夠滿足大多數(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)。如下界面所示。

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

?

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

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

?

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)的屬性。

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

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

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

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

void CheckPermission(string permissionName);

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

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

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

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

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

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

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

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

?

轉(zhuǎn)載于:https://www.cnblogs.com/wuhuacong/p/11065811.html

總結(jié)

以上是生活随笔為你收集整理的ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。