.NET 開源權限框架: SlickSafe.NET 開源權限框架開發指南


前言:本文適用於快速搭建權限系統的用戶,尤其適用於希望有良好定義的權限模型建立;系統解決方案是在基於角色訪問控制(RBAC)策略基礎上的權限訪問模型實現,主要完成了后台權限驗證邏輯和前端權限數據驗證的功能。

1. 權限訪問模型

1). 權限訪問控制基本概念

  • 角色:是用戶集合,表示同一類型的用戶集合,可以擁有相同的功能操作。如:“部門經理”,表示公司下各個部門經理的用戶的集合,通常他們有一組相同的權限。
  • 用戶:指登錄系統進行操作的軟件用戶,由用戶名或者登錄名來進行標識,每個用戶分配有操作列表。
  • 資源:指隸屬於整個軟件系統的各個元素集合的總稱,常見類型有:系統,模塊,菜單,窗體,按鈕,字段和方法等。
  • 權限:角色或用戶有無權利對某個資源項進行操作的專業術語。
  • 授權:對角色或用戶進行授權操作,表示該角色或用戶是否具備權限對某一個資源項的操作。
  • 許可類型:有允許和拒絕兩種。“允許”表示具備權限,“拒絕”表示沒有權限。

 

2). 權限運算模型

a) 權限所屬的兩種類型:繼承和自有

  • 繼承權限:來自於用戶屬於的角色,通常一個用戶有可能屬於多個角色,這樣就可以繼承了多個角色的權限,在管理員操作時,通過角色授權比較方便地實現了用戶權限的批量授權。
  • 自有權限:來自用戶直接授權的權限,不屬於繼承權限,一般由管理員對用戶進行某一個資源的特別授權。

b) 權限許可的兩種類型:允許和拒絕

  • 允許:權限許可取值為允許,表示該用戶具備權限訪問或操作某一項資源。
  • 拒絕:權限許可取值為拒絕,表示該用戶不具備權限訪問或操作某一項資源。

c) 權限計算

  • 自有權限 U 繼承權限:用戶默認取繼承權限,當自有權限有值后,則直接優先取自有權限;
  • 拒絕權限 U 允許權限:如果用戶對一個資源項同時有允許和拒絕權限存在,則拒絕權限大於允許權限;

舉例說明:

 

在上述授權過程中,用戶繼承權限和拒絕權限要參與運算。對於資源數據“新增”項來說:它有來自自有權限的“允許”操作,同時又有來自繼承權限的“拒絕”操作,則權限運算后,該用戶對資源數據“新增”項來說具備“允許”的權限。

 

3). 授權的兩種方式:角色授權和用戶授權並存

角色授權:管理員通過角色完成資源項的權限授權,這是管理員優先采用的授權方式,是為了提前批量化的進行資源權限的授權操作;

用戶授權:管理員通過用戶完成資源項的權限授權,這是管理員為了對用戶權限進行微調的操作,一般根據用戶先查詢權限列表,再根據權限操作(允許和拒絕)來對資源進行授權。

  

2. 數據庫設計

1). 基本數據表

 

 

2). 存儲過程實現邏輯

角色權限列表讀取,用戶權限列表讀取,角色授權保存和用戶授權保存操作都有對應的存儲過程,其中授權操作時候,需要進行權限運算。

 

3. 前端界面操作說明

1) 角色授權

左側為角色列表,當選定一條角色記錄時,右側的權限數據列表就會出現,然后就可以對資源列表數據進行授權操作,每一條角色記錄進行授權后,需要進行保存操作。當要清空某個角色的權限記錄時,把該角色的資源項的權限許可列表的復選框清空,然后再進行保存操作。

2) 用戶授權

左側為用戶列表,當選定一條用戶記錄時,該用戶的權限列表就會顯示,然后進行權限許可授權,再進行保存操作就可以。用戶權限授權需要注意的是:有來自角色的繼承權限,也有用戶自身的自有權限,在授權操作時候,需要理解權限運算模型。

 

 

3) 主界面顯示

用戶登錄系統后,左側導航菜單會根據用戶擁有的資源列表數據進行菜單項展現,當操作具體頁面的數據記錄時,頁面頂部的操作按鈕會根據用戶是否具備允許操作的權限來進行展現。其中如圖所示:黃色按鈕標識該用戶不具備該功能操作。

 

 

4. 權限開發框架的優勢

1). 基於SlickOne 快速開發框架,代碼重用度較高;

2). 用戶登錄,權限校驗的原創設計思想持續改進和優化;

     參考早期博文: http://blog.csdn.net/besley/article/details/8516894 

3). 良好定義的權限模型,順利解決了用戶權限繼承和自有兩種方式的計算;

4). 前端界面權限控制功能的編程框架實現,較為輕松地實現了數據和功能分離的原則,便於開發人員二次開發和功能完善;

5). 多數據庫的支持,默認SQLSERVER,支持Oracle, MySQL, KingBase(人大金倉) 等數據庫;

6). 專業架構設計人員產品維護,始終保持良好架構設計和代碼重構。

 

5. 商業授權和技術支持

SlickSafe 開源權限開發框架受軟件著作權保護,我們提供商業授權服務,產品在線培訓和技術支持服務,歡迎企業用戶咨詢了解。

 

聯系方式:

QQ: 47743901(過河卒子)

EMail: sales@ruochisoft.com

 

6. 交流和建議

開源權限開發框架可以使得用戶快速搭建用於企業軟件的權限模型,而且在編程代碼實踐環節,保持不斷完善和改進,希望有需求的用戶或者開發人員持續推動項目。

開源項目地址:

http://github.com/besley/slicksafe

 

QQ交流群:

331928998

 

DEMO演示:

http://demo.slickflow.com/ssweb2/

用戶密碼: admin/123456, jack/123456

 


免責聲明!

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



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