通用許可權設計方法1
做著做著就會發現這樣設計太過繁瑣,如果公司裡面所有員工都有這樣的許可權呢,每一個人都要配置?那是一件很痛苦的事情。因此再新增一個角色表,把某些人歸為一類,然後再把許可權分配給角色。角色屬下的使用者也就擁有了許可權。
使用者、角色之間的關係是一個使用者可以對應多個角色,一個角色可以對應多個使用者。多對多關係。
所以需要一箇中間表,相信大家都很熟悉,自然不會有疑問。
應用場景
有了使用者和角色以後,就需要設計應用場景,比如一個應用程式有幾大模組(系統模組、專案管理模組、銷售模組),
類似這樣的模組就是一種應用場景,常見的還有 選單 、 操作 等等。
假設現在我們設計好了,應用場景包括 模組、選單、和操作,那麼應該有以下六種關係
- 一個使用者可以對應多個模組,一個模組可以對應多個使用者。多對多關係。
- 一個使用者可以對應多個選單,一個選單可以對應多個使用者。多對多關係。
- 一個使用者可以對應多個操作,一個操作可以對應多個使用者。多對多關係。
- 一個角色可以對應多個模組,一個模組可以對應多個角色。多對多關係。
- 一個角色可以對應多個選單,一個選單可以對應多個角色。多對多關係。
- 一個角色可以對應多個操作,一個操作可以對應多個角色。多對多關係。
於是建立六張表來維護這六種關係。
這樣設計看起來沒什麼問題。是的,如果沒有加入新的關係的話,這樣是已經可以滿足大部分的需求了。可是如果就是如果,新的關係(需求)往往會加入到系統進來。這個時候就需要再建立一個新的表。系統的複雜度也隨著增加。
可以看出,這樣的設計有幾個問題:
- 資料表設計太複雜
- 應對系統方案過於固定
三,把問題簡單化
不同的應用場合,你可能會想出不同的需求,提了一個新的需求以後,可能會發現原來的設計沒方法實現了,於是還要新增一個新的表。這也是上面所提到的問題。
其實不必想得那麼複雜,許可權可以簡單描述為:
某某主體 在 某某領域 有 某某許可權
1,主體可以是使用者,可以是角色,也可以是一個部門
2, 領域可以是一個模組,可以是一個頁面,也可以是頁面上的按鈕
3, 許可權可以是“可見”,可以是“只讀”,也可以是“可用”(如按鈕可以點選)
其實就是Who、What、How的問題
因此上面所提到的六張表其實可以設計一張表:
四,例項說明
下面用一個例子做設計說明。“使用者、角色在頁面上的是使用許可權”
詳細設計:
1,把選單的配置放在資料庫上,每一個選單對於一個唯一的編碼MenuNo,每一個“葉節點”的選單項對於一個頁面(url)。
2,把按鈕的配置放在資料庫上,並歸屬於一個選單項上(其實就是掛在某一個頁面上)。應該一個頁面可能會有幾個按鈕組,比如說有兩個列表,這兩個列表都需要有“增加、修改、刪除”。所以需要增加一個按鈕分組的欄位來區分。
3,把選單許可權分配給使用者/角色,PrivilegeMaster為"User"或"Role",PrivilegeMasterValue為UserID或RoleID,PrivilegeAccess為“Menu",PrivilegeAccessValue為MenuNo,PrivilegeOperation為"enabled"
4,把按鈕許可權分配給使用者/角色,PrivilegeMaster為"User"或"Role",PrivilegeMasterValue為UserID或RoleID,PrivilegeAccess為“Button",PrivilegeAccessValue為BtnID,PrivilegeOperation為"enabled"
5,如果需要禁止單個使用者的許可權,PrivilegeOperation 設定為"disabled"。
如果不清楚的可以看下圖:
資料庫設計:
四,結語
說了這麼多,其實我推薦的只是Privilege的表設計。這個表是who、what、how問題原型的設計。不僅擴充套件性、靈活性都很好,而且將複雜的許可權管理系統濃縮成一句話。
而PrivilegeOperation不僅僅只是使用和禁止兩種,包括分配許可權、授權許可權,都可以用這個欄位定義。只是這無疑加大了應用程式的設計難度,但是對於表設計可以不做出任何的修改就可以完成,可以看出其靈活性。
相關推薦
通用許可權設計方法1
做著做著就會發現這樣設計太過繁瑣,如果公司裡面所有員工都有這樣的許可權呢,每一個人都要配置?那是一件很痛苦的事情。因此再新增一個角色表,把某些人歸為一類,然後再把許可權分配給角色。角色屬下的使用者也就擁有了許可權。 使用者、角色之間的關係是一個使用者可以對應多個角色,一個角色可以對應多個使用者。多對多關係。
通用許可權設計2
使用者管理許可權設計一直是大家討論的熱點,因為幾乎涉及到每一個開發的業務系統。我找了很多很多的資料,大家的核心基本上都是一樣的:基於角色管理. 使用者,角色,模組,許可權的相互組合,就可以形成一個強大的許可權管理系統。 最近在一個專案中設計的一個使用者許可權的設計,很樂
大話設計,沒有模式—通用許可權設計與實現
當代碼寫多了,總有些是經驗,但經驗是什麼呢?if…else用的次數比別人多?顯然不是。有些超棒的設計可以謂之經驗! 功能許可權 網路上流行的經典的許可權設計是【主體】- 【領域】 - 【許可權】( who、what、how問題原型 ) 的設計思想,其中: 【主體】可以是使用者,可以是角色,
實驗目的: 1、理解使用者與模式的概念,掌握oracle中使用者管理的基本方法 2、理解系統許可權、物件許可權的概念,掌握分配許可權的方法 3、理解角色的概念,掌握角色的應用方法 實驗內容: 一、使用者
撰寫人——軟體二班——陳喜平 一、使用者管理與應用 1、檢視使用者與模式 show USER; 2、建立使用者 sqlplus sys/[email protected] as sysdba CREATE USER t16436220 IDENTIFIED B
通用許可權管理概要設計說明書
檔案更改摘要: 日期 版本號 修訂說明 修訂人 稽核人 批准人 2018-10-8 1.0 建立
二十三種設計模式[1] - 工廠方法(Factory Method)
前言 工廠方法,又名工廠模式,屬於建立型模式。 其目的是通過定義一個用於建立物件的介面,讓子類決定例項化哪一個類,使一個類的例項化延遲到子類。
C++設計模式學習筆記03_工廠方法1
0、工廠方法 1、繼續前面的總結,前面說到,當工廠需要生產新的產品時,簡單工廠模式需要我們對程式碼進行修改,而且不是程式碼的擴充套件,而是程式碼比較底層的修改了,因此會帶來很多後期測試等等的問題,工廠方法模式應運而生 2、工廠方法簡單來說就是利用了C++的抽象類(定義了純虛擬函式的類
2018-2019 1 20165203 實驗五 通用協議設計
2018-2019 1 20165203 實驗五 通用協議設計 OpenSSL學習 定義:OpenSSL是為網路通訊提供安全及資料完整性的一種安全協議,囊括了主要的密碼演算法、常用的金鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程式供測試或其它目的使用。 基本功能:
使用者和角色:通用許可權管理系統資料庫表結構如何設計?
一,前言 許可權管理系統的應用者應該有三種不同性質上的使用,A,使用許可權B,分配許可權C,授權許可權 本文只從《使用許可權》和《分配許可權》這兩種應用層面分析,暫時不考慮《授權許可權》這種。二,初步分析使用者和角色 說到許可權管理,首先應該想到,當然要設計一個使用者表,一個
使用 SpringBoot + SpringDataJpa 設計一個通用許可權管理系統
一、前言 1、2018.11 月份,筆者參與了 廣東海洋大學課室管理系統 的開發,開發人員由 ITAEM 軟體開發團隊(艾騰團隊)組成。 2、筆者之前參與過 廣東海洋大學學生宿舍管理系統 的開發,這次不打算參與無腦耗時的業務邏輯模組(CRUD),負責許可權管理系統模組。 3、起初打算
VerilogHDL(1)數字積體電路設計方法概述
一.數字積體電路設計方法概述 2.什麼是硬體描述語言,其主要的作用是什麼? 硬體描述語言是一種用形式化方式來描述數位電路和系統的語言。 它的主要作用是:數位電路系統的設計者利用這種語言可
ASIC設計中一種通用型並行設計方法
我是個“低調”的人,總不喜歡錶達出來,對異性如此,對工作也是如此。在翔哥的鼓勵下,決定把自己工作的一些經驗和思考寫下來,和同道們一起分享。 ASIC設計中一種通用型並行設計方法: 1)流水網的概念提出 IC設計中的控制有序列和並行兩種思想。狀態機方法反應了序列控
許可權管理設計方法
首先,設定三種要素:使用者、群組、角色。使用者為登入用,對應到人。群組對應為使用者的集合,是一種特殊的使用者。角色為一組許可權項的集合,使用者(群組)都有各自的角色。許可權的實現通過Permission類和Rule類來實現。Permission供外部呼叫,Rule為一個介面,為許可權判斷規則。Permissi
SQL通用許可權資料庫表結構設計
####1、使用者組表 CREATE TABLE [dbo].[rrl_group] ( [Id] int NOT NULL IDENTITY(1,1) , [name] nvarchar(50) NOT NULL , [status] int NOT N
通用許可權管理設計篇
部落格地址:http://www.blogjava.net/amigoxie/ 一.引言 因為做過的一些系統的許可權管理的功能雖然在逐步完善,但總有些不盡人意的地方,總想抽個時間來更好的思考一下許可權系統的設計。 許可權系統一直以來是我們應
Scala 函數式程序設計原理(1)
square ack turn no result mutable have ast scope pla 課程地址:https://www.coursera.org/learn/progfun1/home/welcome 1.1 Programming Paradigms
IP地址的規劃和設計方法(三)
情況 網絡 fill 路由 十六進制 fonts 網絡管理 協議 討論 九,內部網絡專用IP地址規劃與網絡地址轉換NAT方法 (1)內部網絡的專用IP地址選擇的根據 RFC1918在討論內部網絡的專用IP地址規劃方法時任務
HTML+CSS·經常使用的設計方法
鏈接樣式 wrapper 居中 marquee body right 塊元素 選擇 重置 HTML+CSS·經常使用的設計方法: =======================================================
測試用例設計方法:判定表
工具 理解 關系 輸入數據 可能 只有一個 輸入 技術 用戶 測試用例設計方法 判定表 定義 分析和表述若幹輸入條件下被測對象針對這些輸入做出的響應的一種工具; 遇到復雜業務邏輯是可以利用該表理清業務關系; 重要概念 條件 l 條件樁:需求規格說明書定義的被測對象的所有輸
初識設計模式1:簡單工廠模式
簡單工廠 height 判斷 目前 mes strong 產品 return logs 簡單工廠模式 簡單工廠模式是類的創建模式,又叫做靜態工廠方法模式。簡單工廠模式由一個工廠對象決定生產出哪一種產品類的實例。 為什麽要使用簡單工廠模式 原因很簡單:解耦。 LOL場