權(quán)限管理系統(tǒng)--系統(tǒng)權(quán)限篇(源碼)
一、前言
隨著網(wǎng)絡(luò)的發(fā)展,企業(yè)對于信息系統(tǒng)數(shù)據(jù)的保密工作愈發(fā)重視,不同身份、角色對于數(shù)據(jù)的訪問權(quán)限都應(yīng)該大相徑庭。
列如
1、不同登錄人員對一個數(shù)據(jù)列表的可見度是不一樣的,如數(shù)據(jù)列、數(shù)據(jù)行、數(shù)據(jù)按鈕等都可能不太一樣。
2、表單的靈活設(shè)計及呈現(xiàn)。
3、流程的靈活設(shè)計及呈現(xiàn)。
4、接口的調(diào)用信息者及性能監(jiān)控。
5、等等。
對于以上等功能,如果要做出一套完整且靈活的權(quán)限管理系統(tǒng),實屬不易。
而接下來作者要介紹的“OverallAuth”權(quán)限管理系統(tǒng),可以說是最全面和最好用的權(quán)限管理系統(tǒng)。
說明:這篇文章作者會把完成“OverallAuth”系統(tǒng)的技術(shù)選型和大致設(shè)計思路一一分享給大家。文章較長請大家耐心看完,在文章的最后有項目的預(yù)覽地址。
二、目錄

三、主要技術(shù)選擇

4、功能介紹及設(shè)計簡述
4.1 菜單設(shè)計
菜單設(shè)計非常簡單,就是普通的樹形結(jié)構(gòu),但作者依賴于layui vue 強大的功能結(jié)構(gòu),在此基礎(chǔ)上對每個菜單設(shè)計了一個重定向和菜單是否啟用的開關(guān)。
說明:菜單是否啟用的存在,可以精準(zhǔn)的控制,每個菜單在什么時候開啟,什么關(guān)閉(配合任務(wù)調(diào)度)。這樣可以針對性調(diào)整用戶在什么時候擁有什么樣的菜單(比如說用于活動頁面,在活動結(jié)束后,可以立馬關(guān)閉),大大減低了維護成本。
如圖:

4.2 角色管理
角色對于任何一個系統(tǒng)來說都是重中之重,本系統(tǒng)當(dāng)然也不例外。
“OverallAuth”系統(tǒng)的角色幾乎覆蓋了所有功能,按鈕、菜單、用戶、數(shù)據(jù)行、數(shù)據(jù)列、流程、表單等。所以在設(shè)計方面,我分別建立了以下關(guān)系,角色和按鈕、角色和菜單、角色和用戶、角色和數(shù)列等。以便靈活且高效的控制系統(tǒng)中的任何一個功能。
當(dāng)然角色也不是萬能的,對于更加細致化的控制,角色也有過于“擁擠”的時候,所以在“OverallAuth”系統(tǒng)中,作者還加入了一些規(guī)則以便更加細致的控制每個模塊。
4.3 用戶管理
之前也說到,角色和用戶存在關(guān)系,以便控制用戶的菜單權(quán)限等,這和一般的權(quán)限管理系統(tǒng)基本一致,但本“OverallAuth”系統(tǒng)作為一個靈活且好用的權(quán)限管理系統(tǒng),作者在這上面下了一定功夫,引入了“用戶組”等概念。簡單來說就是一個用戶可以擁有多種角色,角色之間是互補狀態(tài)。
4.4 按鈕樣式
在一個系統(tǒng)中,操作按鈕是必不可少的,它們的樣式也大相徑庭,所以作者設(shè)計了自定義按鈕樣式功能,如圖:

該功能可以控制系統(tǒng)中任何一個按鈕的樣式,從而做到實時改變每個按鈕樣式。
4.5 按鈕列表
在擁有自定義按鈕樣式后,當(dāng)然要把樣式運用到每個按鈕之上,所以作者做了一個系統(tǒng)列表,來控制每個功能的按鈕樣式和按鈕事件及按鈕名稱等,如圖:

為了高效的開發(fā),作者對按鈕控制寫了一套模版,開發(fā)者只需要在有使用按鈕的地方,加入模版便能夠得到相應(yīng)的按鈕。
4.5 菜單權(quán)限、按鈕權(quán)限
菜單權(quán)限和按鈕權(quán)限,又稱“功能級權(quán)限”,這是大多數(shù)系統(tǒng)都擁有的功能,它的實現(xiàn)方式也很簡單,就是每個菜單、按鈕都可以通過角色來設(shè)置用戶的可操作“單元”。如圖:

“功能級權(quán)限”對于一般系統(tǒng)來說已經(jīng)足夠,但對于要求較高的系統(tǒng)來說還遠遠不夠。所以作者編寫出了一套能高效控制“數(shù)據(jù)列”、“數(shù)據(jù)行”的功能級權(quán)限管理。
4.6 顯示列設(shè)置
在說如何控制“數(shù)據(jù)列”權(quán)限前,我想先說說數(shù)據(jù)列的動態(tài)獲取,只有掌握了需要顯示的數(shù)據(jù)列,才能有效的控制它。
在webapi中,作者寫了一個接口(通過反射),以便獲取所有需要顯示的數(shù)據(jù)列。其中包括字段、字段類型、字段描述等信息。并且在此基礎(chǔ)上可以編輯改變字段顯示的名稱、寬度、排序方式、對齊方式、插槽、是否行權(quán)限字段等信息。如圖

在上述圖片中,可以看到有一個“同步屬性”的按鈕,只要返回字段有變動,便會自動同步其變動信息,使其作用到系統(tǒng)每一個顯示的地方,讓開發(fā)更便捷。
4.7 數(shù)據(jù)列權(quán)限
什么是數(shù)據(jù)列權(quán)限,舉一個簡單的列子。
人員A和人員B都有一個“員工信息”的列表。其中“員工信息”中有一列為“工資”的數(shù)據(jù)。為了工資保密,員工A有查看人員工資的權(quán)限,員工B沒有查看權(quán)限,那么就需要數(shù)據(jù)列權(quán)限。
而作者在“OverallAuth”系統(tǒng)中,結(jié)合4.6 顯示列設(shè)置 這一功能,完成了這一功能,且能很靈活的控制每個模塊列的顯示情況。如圖所示:

下面是admin和張三兩個用戶數(shù)據(jù)列的對比圖


4.8 數(shù)據(jù)行權(quán)限
對于數(shù)據(jù)行權(quán)限,作者使用動態(tài)解析的方式,寫了一套數(shù)據(jù)行權(quán)限的解析規(guī)則(把界面上選擇要建立規(guī)則的字段,動態(tài)解析成程序能識別的代碼)。可以靈活的設(shè)置數(shù)據(jù)的顯示規(guī)則。如圖所示



通過上述圖片可以看到,設(shè)置規(guī)則后,同一個用戶列表,同一個登錄人,只能看到符合規(guī)則的數(shù)據(jù)。
5、預(yù)覽地址
1、預(yù)覽地址:http://139.155.137.144:9012
2、qq群:801913255

關(guān)注我:一個全棧多端的寶藏博主,定時分享技術(shù)文章,不定時分享開源項目。關(guān)注我,帶你認識不一樣的程序世界

浙公網(wǎng)安備 33010602011771號