1. 程式人生 > >通用許可權管理設計篇

通用許可權管理設計篇

部落格地址:http://www.blogjava.net/amigoxie/

一.引言

       因為做過的一些系統的許可權管理的功能雖然在逐步完善,但總有些不盡人意的地方,總想抽個時間來更好的思考一下許可權系統的設計。

       許可權系統一直以來是我們應用系統不可缺少的一個部分,若每個應用系統都重新對系統的許可權進行設計,以滿足不同系統使用者的需求,將會浪費我們不少寶貴時間,所以花時間來設計一個相對通用的許可權系統是很有意義的。

二.設計目標

       設計一個靈活、通用、方便的許可權管理系統。

       在這個系統中,我們需要對系統的所有資源進行許可權控制,那麼系統中的資源包括哪些呢?我們可以把這些資源簡單概括為靜態資源

(功能操作、資料列)和動態資源(資料),也分別稱為物件資源資料資源,後者是我們在系統設計與實現中的叫法。

系統的目標就是對應用系統的所有物件資源和資料資源進行許可權控制,比如應用系統的功能選單、各個介面的按鈕、資料顯示的列以及各種行級資料進行許可權的操控。

三.相關物件及其關係

       大概理清了一下許可權系統的相關概念,如下所示:

1.許可權

系統的所有許可權資訊。許可權具有上下級關係,是一個樹狀的結構。下面來看一個例子

系統管理

        使用者管理

               檢視使用者

                新增使用者

                     修改使用者

                     刪除使用者

       對於上面的每個許可權,又存在兩種情況,一個是隻是可訪問,另一種是可授權,例如對於“檢視使用者”這個許可權,如果使用者只被授予“可訪問”,那麼他就不能將他所具有的這個許可權分配給其他人。

2.使用者

應用系統的具體操作者,使用者可以自己擁有許可權資訊,可以歸屬於0n個角色,可屬於0n個組。他的許可權集是自身具有的許可權、所屬的各角色具有的許可權、所屬的各組具有的許可權的合集。它與許可權、角色、組之間的關係都是nn的關係。

3.角色

為了對許多擁有相似許可權的使用者進行分類管理,定義了角色的概念,例如系統管理員、管理員、使用者、訪客等角色。角色具有上下級關係,可以形成樹狀檢視,父級角色的許可權是自身及它的所有子角色的許可權的綜合。父級角色的使用者、父級角色的組同理可推。

4.

為了更好地管理使用者,對使用者進行分組歸類,簡稱為使用者分組。組也具有上下級關係,可以形成樹狀檢視。在實際情況中,我們知道,組也可以具有自己的角色資訊、許可權資訊。這讓我想到我們的QQ使用者群,一個群可以有多個使用者,一個使用者也可以加入多個群。每個群具有自己的許可權資訊。例如檢視群共享。QQ群也可以具有自己的角色資訊,例如普通群、高階群等。

針對上面提出的四種類型的物件,讓我們通過圖來看看他們之間的關係。


  有上圖中可以看出,這四者的關係很複雜,而實際的情況比這個圖還要複雜,許可權、角色、組都具有上下級關係,許可權管理是應用系統中比較棘手的問題,要設計一個通用的許可權管理系統,工作量也著實不小。

當然對於有些專案,許可權問題並不是那麼複雜。有的只需要牽涉到許可權和使用者兩種型別的物件,只需要給使用者分配許可權即可。

在另一些情況中,引入了角色物件,例如基於角色的許可權系統, 只需要給角色分配許可權,使用者都隸屬於角色,不需要單獨為使用者分配角色資訊。

理清了物件關係之後,讓我們接著來進行資料庫的設計。在資料庫建模時,對於NN的關係,一般需要加入一個關聯表來表示關聯的兩者的關係。初步估計一下,本系統至少需要十張表,分別為:許可權表、使用者表、角色表、組表、使用者許可權關聯表、使用者角色關聯表、角色許可權關聯表、組許可權關聯表、組角色關聯表、使用者屬組關聯表。當然還可能引出一些相關的表。下面讓我們在PowerDesigner中畫出各表吧。

       各表及其關係如下:



1.使用者表


2.角色表


3.許可權表


4.組表


5.角色許可權表


6.組許可權表


7.組角色表


8.使用者許可權表


9.使用者角色表


10.使用者組表


11.組織表


12.操作日誌表


1.引言

1.1 編寫目的

本文件對通用許可權管理系統的總體設計、介面設計、介面總體設計、資料結構設計、系統出錯處理設計以及系統安全資料進行了說明。

1.2 背景

a、 軟體系統的名稱:通用許可權管理系統;

b、 任務提出者、開發者:謝星星;

c、 J2EEweb系統中需要使用許可權管理的系統。

1.3 術語

本系統:通用許可權管理系統;

SSH:英文全稱是Secure Shell

1.4 預期讀者與閱讀建議


1.5 參考資料

《通用許可權管理系統需求規格說明書》

《通用許可權管理系統資料庫設計說明書》

2.總體設計

2.1 設計目標

許可權系統一直以來是我們應用系統不可缺少的一個部分,若每個應用系統都重新對系統的許可權進行設計,以滿足不同系統使用者的需求,將會浪費我們不少寶貴時間,所以花時間來設計一個相對通用的許可權系統是很有意義的。

本系統的設計目標是對應用系統的所有資源進行許可權控制,比如應用系統的功能選單、各個介面的按鈕控制元件等進行許可權的操控。

2.2 執行環境

作業系統:Windows系統作業系統和Linux系列作業系統。

2.3 網路結構

 通用許可權管理系統可採用Java Swing實現,可以在桌面應用和Web應用系統中進行呼叫。如果需要要適應所有開發語言,可以將其API釋出到WEB Service上。暫時用Java Swing實現。

2.4 總體設計思路和處理流程

在說明總體設計思路前,我們先說明本系統的相關概念:

1. 許可權資源

系統的所有許可權資訊。許可權具有上下級關係,是一個樹狀的結構。下面來看一個例子

系統管理

使用者管理

檢視使用者

新增使用者

修改使用者

刪除使用者

對於上面的每個許可權,又存在兩種情況,一個是隻是可訪問,另一種是可授權,例如對於“檢視使用者”這個許可權,如果使用者只被授予“可訪問”,那麼他就不能將他所具有的這個許可權分配給其他人。

2. 使用者

應用系統的具體操作者,使用者可以自己擁有許可權資訊,可以歸屬於0~n個角色,可屬於0~n個組。他的許可權集是自身具有的許可權、所屬的各角色具有的許可權、所屬的各組具有的許可權的合集。它與許可權、角色、組之間的關係都是n對n的關係。

3. 角色

為了對許多擁有相似許可權的使用者進行分類管理,定義了角色的概念,例如系統管理員、管理員、使用者、訪客等角色。角色具有上下級關係,可以形成樹狀檢視,父級角色的許可權是自身及它的所有子角色的許可權的綜合。父級角色的使用者、父級角色的組同理可推。

4. 

為了更好地管理使用者,對使用者進行分組歸類,簡稱為使用者分組。組也具有上下級關係,可以形成樹狀檢視。在實際情況中,我們知道,組也可以具有自己的角色資訊、許可權資訊。這讓我想到我們的QQ使用者群,一個群可以有多個使用者,一個使用者也可以加入多個群。每個群具有自己的許可權資訊。例如檢視群共享。QQ群也可以具有自己的角色資訊,例如普通群、高階群等。

針對如上提出的四種物件,我們可以整理得出它們之間的關係圖,如下所示:


總體設計思路是將系統分為組許可權管理、角色許可權管理、使用者許可權管理、組織管理和操作日誌管理五部分。

其中組許可權管理包括包含使用者、所屬角色、組許可權資源和組總許可權資源四部分,某個組的許可權資訊可用公式表示:組許可權 = 所屬角色的許可權合集 + 組自身的許可權。

角色許可權管理包括包含使用者、包含組和角色許可權三部分,某個角色的許可權的計算公式為:角色許可權 = 角色自身許可權。

使用者許可權管理包括所屬角色、所屬組、使用者許可權、使用者總許可權資源和組織管理五部分。某個使用者總的許可權資訊存在如下計算公式:使用者許可權 = 所屬角色許可權合集 + 所屬組許可權合集 + 使用者自身許可權。

組織管理即對使用者所屬的組織進行管理,組織以樹形結構展示,組織管理具有組織的增、刪、改、查功能。

操作日誌管理用於管理本系統的操作日誌。

注意:因為組和角色都具有上下級關係,所以下級的組或角色的許可權只能在自己的直屬上級的許可權中選擇,下級的組或者角色的總的許可權都不能大於直屬上級的總許可權。

2.5 模組結構設計

本系統的具有的功能模組結構如下圖所示:


2.6 尚未解決的問題

無。

3.介面設計(暫略)

3.1 使用者介面(暫略)

3.2 外部介面(暫略)

3.3 內部介面(暫略)

4.介面總體設計

本節將闡述使用者介面的實現,在此之前對頁面元素做如下約定:


4.1 組許可權管理


當用戶選擇“修改”按鈕時,彈出使用者列表,操作人可以通過勾選或取消勾選來修改該組所包含的使用者。


當用戶選擇“修改”按鈕時,彈出角色樹形結構,操作人可以通過勾選或取消勾選來修改該組所屬的角色。



通過對已具有的許可權取消勾選,或為某許可權新增勾選,來修改組的許可權資訊,點選“儲存”按鈕儲存修改資訊。

4.1.5組管理

在下圖中,選中組1的時候,右鍵點選可彈出組的操作列表,包括新增、刪除和修改按鈕,從而完成在該組下新增子組,刪除該組以及修改該組的功能。


4.2 角色許可權管理

相關推薦

通用許可權管理設計

部落格地址:http://www.blogjava.net/amigoxie/ 一.引言        因為做過的一些系統的許可權管理的功能雖然在逐步完善,但總有些不盡人意的地方,總想抽個時間來更好的思考一下許可權系統的設計。        許可權系統一直以來是我們應

通用許可權管理概要設計說明書

  檔案更改摘要:   日期 版本號 修訂說明 修訂人 稽核人 批准人 2018-10-8 1.0 建立

使用者和角色:通用許可權管理系統資料庫表結構如何設計

一,前言 許可權管理系統的應用者應該有三種不同性質上的使用,A,使用許可權B,分配許可權C,授權許可權 本文只從《使用許可權》和《分配許可權》這兩種應用層面分析,暫時不考慮《授權許可權》這種。二,初步分析使用者和角色 說到許可權管理,首先應該想到,當然要設計一個使用者表,一個

使用 SpringBoot + SpringDataJpa 設計一個通用許可權管理系統

一、前言 1、2018.11 月份,筆者參與了 廣東海洋大學課室管理系統 的開發,開發人員由 ITAEM 軟體開發團隊(艾騰團隊)組成。 2、筆者之前參與過 廣東海洋大學學生宿舍管理系統 的開發,這次不打算參與無腦耗時的業務邏輯模組(CRUD),負責許可權管理系統模組。 3、起初打算

大型入口網站的RBAC使用者許可權管理設計

這是我在網上找的一些設計比較好的RBAC許可權管理不知道,像新浪、搜狐、網易、百度、阿里巴巴、淘寶網的RBAC使用者許可權這一塊,都是這種細顆粒的RBAC設計開發,還是把他們像使用者組、角色組、許可權組、操作組、資源組的表盒資料等都封裝成工具類,持久化曾通過一個數據庫檢視V

基於CI(codeigniter)的通用許可權管理系統(擁有完整RBAC許可權模型,php開發)

大概利用一個月時間吧,把RBAC許可權模型熟悉了一遍,開發了一套通用系統,主要模組包括以下:1、機構管理:可多級新增、刪除等2、使用者管理:可批量新增、刪除等3、模組管理:配置功能目錄樹形顯示4、角色管

使用通用許可權管理系統元件的隨想

   本人供職於國內一家比較知名的物流公司,一直從事於基層公司物流軟體的規劃和設計開發工作,在長期的工作實踐中深深地體會到作為不是專業的軟體行業而又從事軟體開發行業的業餘性的軟體開發設計人員來說,在工作中需要克服的困難和麵對的艱辛有多大多難。    對與專業的軟體開發設計公司來說,毋庸置疑的一點是都會有

Java Web許可權管理設計及實現

最近在做一個許可權相關的功能,在專案原有許可權管理上面進行擴充套件,一方面支援介面上控制到按鈕級別,後端介面沒有許可權不能進行訪問;另一個方面,對專案中應用管理模組的應用管理員授權,使其具有對其名下的

細粒度通用許可權管理框架(可控制表格行內按鈕)原始碼提供下載

特別宣告: 提供的原始碼已經包含了 AppBoxPro 的全部原始碼,用 VS2012 開啟專案後,直接 Ctrl+F5 可以執行起來(預設使用VS自帶的LocalDB資料庫)。 FineUIPro是商業程式,僅包含v1.7.0公測版的DLL;當然你也可以自行把 FineUIPro 換成 Fine

PHP之後臺使用者許可權管理設計

關於許可權管理資料庫需要用到多少張表這個問題,網上有的說是建立六張表,有的說建立五張表,其實大同小異,根據你自己設計的表字段。不過建立五張表:使用者表,角色表,許可權表(即後來的選單表),使用者角色表,許可權角色表。是最容易讓新人理解的。 我是建立了四張表。 使用者表(我把

用EOM眼光評判“做全國最最好的標準許可權元件和通用許可權管理軟體”之一

光靠理論上闡述EOM顯然不太容易理解,我想找個現實的例子,加以進一步說明。最近我在網上看到了《我要做全國最最好的標準許可權元件和通用許可權管理軟體》系列隨筆。作者通過自己的親身經歷,提出要做全國最最好的標準許可權元件和通用許可權管理軟體。當然“全國”,“最最好”、“標準組件”

企業專案許可權管理設計思路詳解

任何系統都離不開許可權的管理,有一個好的許可權管理模組,不僅使我們的系統操作自如,管理方便,也為系統新增亮點。l        不同職責的人員,對於系統操作的許可權應該是不同的。優秀的業務系統,這是最基本的功能。l        可以對“組”進行許可權分配。對於一個大企業的業

許可權管理設計方法

首先,設定三種要素:使用者、群組、角色。使用者為登入用,對應到人。群組對應為使用者的集合,是一種特殊的使用者。角色為一組許可權項的集合,使用者(群組)都有各自的角色。許可權的實現通過Permission類和Rule類來實現。Permission供外部呼叫,Rule為一個介面,為許可權判斷規則。Permissi

基於角色-資源-使用者的許可權管理設計

    CREATE TABLE `roles_resources` (       `rsid` int(11) default NULL,       `rid` int(11) default NULL,       `rrId` int(11) NOT NULL auto_increment,    

[許可權管理系統] (五)-Spring security(授權過程分析)

  歡迎關注公眾號【Ccww筆記】,原創技術文章第一時間推出 前言 許可權管理系統的元件分析以及認證過程的往期文章: Spring security (一)架構框架-Component、Service、Filter分析 Spring Security(二)--WebSecurityCon

通用管理系統權限設計

href 關系 管理方式 order src 浪費時間 htm 模塊 cnblogs 原文:通用的管理系統權限設計在以前的工作中,我常常會遇到一些系統管理權限的問題,常常是一種系統一種管理方式,很浪費時間和精力,後來我根據Windows的文件權限管理方式想了一種相似流程的控

Spring Boot + Spring Cloud 實現許可權管理系統 後端(十九):服務消費(Ribbon、Feign)

技術背景 上一篇教程中,我們利用Consul註冊中心,實現了服務的註冊和發現功能,這一篇我們來聊聊服務的呼叫。單體應用中,程式碼可以直接依賴,在程式碼中直接呼叫即可,但在微服務架構是分散式架構,服務都執行在各自的程序之中,甚至部署在不同的主機和不同的地區。這個時候就需要相關的遠端呼叫技術了。 Spring

Spring Boot + Spring Cloud 實現許可權管理系統 後端(二十):服務熔斷(Hystrix、Turbine)

線上演示 演示地址:http://139.196.87.48:9002/kitty 使用者名稱:admin 密碼:admin 雪崩效應 在微服務架構中,由於服務眾多,通常會涉及多個服務層級的呼叫,而一旦基礎服務發生故障,很可能會導致級聯故障,進而造成整個系統不可用,這種現象被稱為服務雪崩效應。服務雪崩

Spring Boot + Spring Cloud 實現許可權管理系統 後端(二十二):鏈路追蹤(Sleuth、Zipkin)

線上演示 演示地址:http://139.196.87.48:9002/kitty 使用者名稱:admin 密碼:admin 技術背景 在微服務架構中,隨著業務發展,系統拆分導致系統呼叫鏈路愈發複雜,一個看似簡單的前端請求可能最終需要呼叫很多次後端服務才能完成,那麼當整個請求出現問題時,我們很難得知到

資料庫 關於使用樹形選單做許可權管理系統的資料庫設計

這是使用者 然後是角色 這是角色所對應的許可權 最後是許可權選單 然後根據登入的不同的使用者來顯示不同的許可權選單的sql語句 select distinct j.Menuid,m.name,m.href,j.parentid from t_layui_