C#.NET Winform快速開發框架權限系統詳細設計(原創作品)


基於C/S結構快速開發框架之權限系統設計 - 基本概述|C/S框架網

 
一、權限系統基本概述
 
本文檔描述了C/S系統快速開發框架旗艦版V5.0權限管理模塊詳細功能設計,權限實現原理、系統架構設計、數據庫設計、功能測試以及實施方案等。
 
1.1 權限管理簡單定義
 
權限管理是后台系統都會涉及的一個重要組成部分,主要目的是對整個后台管理系統進行權限的控制,針對對象是使用該系統的用戶或員工,避免因權限控制缺失或操作不當引發的風險問題,如操作錯誤,數據泄露等問題。根據系統設置的安全規則或策略,用戶可以訪問而且只能訪問自己被授權的資源。
 
C/S系統快速開發框架權限管理是一個賬號對應多個角色,每個角色對應相應的權限集RBAC模型,且通過角色可以實現靈活且多樣的的權限操作需求。
 
1.2 權限類型
 
基於角色的訪問權限控制(RBAC)模型,賦予用戶的權限管理,可以分為三大類型:
 
 功能權限
 
角色的定義對模塊和功能能否有執行權限,功能是系統執行權限控制的基本單元。
可以操作的功能不同,保證系統安全,避免操作風險。
 
 數據權限
 
權限的定義對功能涉及到的數據是否有增刪查改的權限,能否查看與編輯系統相關數據。
保證數據隱私,避免數據泄密。
 
 界面權限
 
賬號的定義對控制字段的可見性,可編輯性,用戶可以看到的頁面進行限制,職責不同所需要頁面不同,保證操作效率,避免頁面干擾。
 
 
1.3 RBAC模型
 
1.3.1 基於角色的訪問控制
 
RBAC(Role-Based Access Control)基於角色的訪問控制。成熟的權限模型強調三個要素:用戶、角色、權限,用戶與角色是多對多關系,角色與權限是多對多關系。RBAC是以“用戶”為單位的權限設計,以“權限”為單位的權限設計,以“用戶”與“權限”結合的權限設計。
 
權限設計:用戶與角色邏輯關系圖:
 
貼圖圖片
 
RBAC模型特點:
 
把權限賦予角色,再把角色賦予用戶。
用戶和角色,角色和權限都是多對多的關系。
用戶擁有的權限等於所有的角色的權限之和。
 


貼圖圖片

 
 
1.3.2 基於RBAC的用戶組
 
基於RBAC模型,適當延展增加用戶組概念,直接給用戶組分配角色,再把用戶加入用戶組,這樣用戶除了擁有自身的權限外,還擁有了所屬用戶組的所有權限。用戶組權限是粗狂式設計,不能友好的細分權限。
 


貼圖圖片

 
 
1.4 C/S系統開發框架窗體權限控制
 
C/S快速開發框架的權限控制對象:功能菜單、數據窗體、功能按鈕。
 
功能界面是點擊菜單或點擊按鈕打開的,因此權限控制首先是控制菜單。當用戶點擊菜單打開界面后,系統會分析當前用戶的權限以及對界面的組件進行控制,如控制按鈕、表格列、界面組件是否顯示或禁用等。
 
1.4.1 開發框架數據窗體分類
 
數據窗體分為兩類:
 
a) 數據字典窗體. 繼承基類:frmBaseDataDictionary
 
b) 業務單據窗體. 繼承基類:frmBaseBusinessForm
 
 
1.4.2 按鈕(功能點)指定權限值
 
為了方便給用戶分配權限以及進行權限控制, C/S系統快速開發框架針對窗體中每個功能按鈕或功能點分配一個特殊的數字編號(計算機二進制數據的數值),該數值分別對應2^n次方,如0,1,2,4,8,16,32,64,128,256,512,1024。。。32位的硬件系統最多支持2^32次方,64位的硬件系統最多支持2^64次方。
 
 若【X】按鈕分配的數值為0,則該按鈕或功能點不受權限控制,任何用戶都可訪問。
 若【X】按鈕分配的數值為1,只有擁有1權限的用戶才能訪問。
 
 
1.4.3 窗體的基本權限
 
數據字典窗體的基本功能權限:增、刪、改、查、打印、預覽。
 
C# Code:

/// <summary>
/// 數據字典擁有的功能(增、刪、改、查、打印、預覽)
/// </summary>
public const int MASTER_ACTION = DATA_ACTION_VALUE + REPORT_ACTION_VALUE;


業務單據窗體的基本功能權限:增、刪、改、查、打印、預覽、審核、修改歷史。
 
C# Code:

/// <summary>
/// 業務單據擁有的功能(增、刪、改、查、打印、預覽、審核、修改歷史)
/// </summary>
public const int BUSINESS_ACTION_VALUE = DATA_ACTION_VALUE + REPORT_ACTION_VALUE +
ButtonAuthority.APPROVAL +
ButtonAuthority.SHOW_MOD_HISTORY;




1.5 二進制的邏輯運算
 
二進制是計算技術中廣泛采用的一種數制,二進制數據是用0和1兩個數碼來表示的數。
二進制數的運算除了有【四則運算】外,還可以進行【邏輯運算】,下面分別予以介紹。
 
 
1.5.1 二進制四則運算
 
二進制數與十進制數一樣,同樣可以進行加、減、乘、除四則運算,其算法規則如下: 
 
加運算:0+0=0,0+1=1,1+0=1,1+1=10(逢2進1)
 
減運算:1-1=0,1-0=1,0-0=0,0-1=1(向高位借1當2)
 
乘運算:0×0=0,0×1=0,1×0=0,1×1=1(只有同時為“1”時結果才為“1”) 
 
除運算:0÷1=0,1÷1=1,二進制數只有兩個數(0,1),因此它的商是1或0。
 
 
1.5.2 二進制的邏輯運算
 
邏輯運算又稱布爾運算。
 
表示方法有:"或"/"OR"、"與"/"AND" 、"非"/"Xor"、"等"/"="。
 
1和0表示"真"和"假"。
 
And:同為真時為真。如:1 AND 1=1,1 AND 0=0。
 
Or:同為假時為假。如:0 OR 0=0,1 OR 0=1, 1 OR 1=1。
 
Xor:相同為假。如:1 XOR 1=0, O XOR O=0, 0 XOR 1=1。
 
 
二 權限系統功能模塊介紹
 
C/S系統快速開發框架權限系統是基於菜單管理+功能按鈕+系統用戶+角色崗位+組織機構等多個數據維度構成,滿足大多數桌面管理應用系統的需求。
 
2.1 功能模塊構成
 
貼圖圖片
 
 
2.2 用戶管理 (User Management)
 
用戶管理是指管理與維護軟件系統的使用者,用戶管理就是給公司或企業人員進行系統登記,一般是由系統管理員進行登記,經登記的使用者及分配系統使用權限才能登入系統。
 
用戶管理中的用戶主要是軟件系統的使用者。
 
貼圖圖片
 
 
2.3 角色/崗位 (Role Management)
 
角色是基於業務管理需求而預先在系統中設定好的,每個角色對應明確的系統權限,角色也不會隨着用戶的被添加和被移除而進行改變,只有分配用戶的角色才有實際意義。對於企業管理人員而言,角色與崗位相同,如倉管員、調度員、系統管理員、采購員、會計、出納等都是企業組織架構中的崗位,對於管理應用系統,如ERP系統,崗位既ERP系統中的角色。
 
貼圖圖片
 
 
2.4 組織機構權限管理 (Group Management)
 
C/S系統快速開發框架中的組織機構權限是指組權限(Group)。用戶管理中的用戶主要是指軟件系統的使用者,把一個或多個用戶歸類在一起形成一個群體或小組,構成軟件系統的用戶組。把用戶分組后,組用戶成員擁有相同的權限等級。
 
貼圖圖片
 
 
2.5 系統菜單管理 (System Menu Management)
 
系統菜單即菜單欄,由若干個下拉菜單組成,每個下拉菜單包含一組菜單命令,對應打開不同的窗口或執行不同的命令,若菜單的內容能跟隨業務邏輯變化,所以也被稱為“動態菜單”。
 
針對功能菜單來划分用戶權限其實是比較粗顆粒度的一種管理方式,用戶獲得授權即可使用該菜單欄下的全部數據查看權限和功能操作權限。
 
貼圖圖片
 
 
2.6 臨時權限
 
臨時角色是針對特殊用戶群體設置的,通常會設置角色的過期時間,一般並沒有固定角色符合擁有客戶所需的全部操作權限,因此需要開設臨時角色,並且支持給臨時角色最大的權限選擇空間。
 
 
貼圖圖片
 
 
2.7 批量設置用戶和角色
 
批量設置用戶和角色功能是針對用戶組管理開發的一個輔助功能,把設置用戶和角色采用復選框的方式,提高界面用戶體驗。

貼圖圖片
 
四 權限系統實現原理
 
本文將描述基於功能按鈕權限控制的基本實現原理,在學習權限系統實現原理之前,請先看下面的流程圖:
 
貼圖圖片
 
 
【當前用戶】:是指當前登錄系統的用戶(軟件使用者)。
 
【點擊菜單】:用戶點擊界面上面的菜單欄或左側導航菜單。用戶能查看或點擊的菜單項代表當前用戶擁有此菜單的權限。
 
【打開界面】:用戶點擊菜單執行事件並成功打開功能窗體,觸發初始化界面(Form_Load)事件,開發框架底層將根據當前用戶的權限進行按鈕控制,有按鈕權限則顯示按鈕,無權限的則不創建或隱藏按鈕。
 
【按鈕控制】:下面將重點講解界面的按鈕權限控制實現原理。
 
 
4.1 按鈕權限控制基本原理
 
以數據字典窗體【員工管理】舉例說明,假設【員工管理】擁有以下按鈕及對應的權限值:
 
貼圖圖片
 
 
模擬場景:
 
用戶【User-孫】屬於【Role1】角色, 在【角色管理】界面內給【Role1】角色分配【員工管理】窗體的權限為:(1,2,4,8)=15,勾選【新增】、【刪除】、【修改】、【查看】功能, 用戶【User-孫】登錄后取到【員工管理】窗體的權限值為1+2+4+8=15. 在打開【員工管理】窗體時, 框架底層對【員工管理】窗體的每個按鈕分別與當前用戶的權限值15進行邏輯【與】運算。
 
邏輯【與】運算結果如下:
 

貼圖圖片
 
在Form.Load事件內調用InitButtons方法,有權限的按鈕則Button.Enable=True, 無權限的按鈕則Button.Enable=False; 
 
 
4.2 邏輯“與”運算C#代碼參考
 
相關C#代碼參考:
 
貼圖圖片
 
ButtonAuthorized方法主要是進行邏輯“與”運算:
 
貼圖圖片
 
 
參考文檔:
 
Winform通用框架(C#.NET)之權限管理系統詳細設計|C/S框架網
 
 
本文轉自C/S框架網: http://www.csframework.com
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM