權限設計實現(MVC4+Bootstrap+ PetaPoco+Spring.Net)
一、前言
至畢業后一直在做企業Web開發,做過的項目也有不少,每個項目的框架設計都不是一樣,但是每個項目的權限模塊都是我做的,這樣慢慢以來,就形成自己的一套權限開發框架,並成功的在自己做過的幾個外包項目中使用,反應較為不錯,尤其是BootStrap的頁面風格深受客戶喜歡。
二、框架設計
下面就開始看圖說話環節:
架構設計
詳細解決方案
01_Murphy.Web:表現層,采用了區域方式實現了各個模塊的分離
02_Murphy.Business:業務邏輯層
03_Murphy.Core:框架核心層,主要是一些緩存處理,參數處理,日志處理等。
04_Murphy.Data.SQLServer:數據訪問層
05_Murphy.DbUtility:數據庫操作類,引入PetaPoco並做了少量的修改以適應
06_Murphy.Entity:實體層
07_Murphy.IData:數據訪問接口層
08_Murphy.Utils:工具類,里面包含了很多東西如文檔處理、加密解密、分頁處理、驗證碼等等
技術選型
01_ASP.NET MVC 4.0作為頁面服務
02_PetaPoco輕量級ORM框架用於數據持久化
03_BootStrap 做為頁面展示,做了大量定制,完美支持IE8,這也是深受客戶喜愛的原因
04_artDialog 作為彈出層插件
05_zTree 作為樹插件
06_My97DatePicker 作為日期插件
07_Noty 作為信息提示插件
08_TreeGrid 作為樹表格插件
09_Log4Net 作為日志組件
10_Json.NET 作為序列化組件
11_ Highcharts作為圖形化報表插件
三、需求分析
首先我們需要理解到底什么是權限,以及如何在項目中運用權限,在這里我根據自己的理解描述下,希望各位輕拍。
1、權限性質
權限系統的應用者應該有三種不同性質的使用
1.使用權限
2.分配權限
3.授權權限
前兩個都比較好理解,在這里我重點解釋下授權權限是什么。例如目前給公司做的一套銷售管理系統,是面向全國加盟商的,每個加盟商都有自己的用戶,在系統中由各個地方的加盟商管理員創建編輯凍結用戶,並給用戶分配角色授權等。總部人員不用直接管理,但是加盟商管理員的權限是由總部人員授予的。講再俗一些,就是委托別人來管理、可以授權給別人來管理某個業務。
2、權限資源
權限資源一般情況下分為四類。
1.操作權限 部門經理能夠審批、而員工不可以
2.字段權限 部門經理能夠看到本部門下所有員工的崗位值,而員工只能看到自己的崗位值
3.模塊權限 經理和員工登陸系統后擁有的功能模塊是不一樣的
4.數據權限 部門經理可以看到本部門下所有員工的工作計划,而員工只能看到自己的工作計划
3、功能列表
現在網上很多的權限系統都基於角色訪問控制,基於用戶控制的很少,但是在很多情況下基於用戶授權是很方便的,本系統不僅支持角色授權,還支持用戶授權。首先我們要明確我們要去實現哪些東西。
1.操作權限項
2.功能模塊
3.崗位管理
4.角色管理
5.組織機構
6.用戶管理
7.數據字典
8.系統參數
9.日志管理
9.1 登陸日志
9.2 操作日志
9.3 系統日志
10.代碼生成
10.1 命名空間
10.2 類庫命名
10.3 保存目錄
四、設計實現
1、表設計
這里重點說下關於權限的存儲, 其實不必想得那么復雜,看透了,也是很簡單的事情,就是 “什么主體在什么領域有什么權限?”把這個邏輯關系想清楚了就可以了,你這樣設計了,擴展了系統靈活性,將來也容易維護一些。自己的權限系統是按“什么主體在什么領域有什么權限?”的設計思想開發的。
什么是主體:在系統里確定各種對象的唯一性,一個是對象的類別,一個是對象的主鍵,就像是系統中的用戶(主鍵)
什么是領域:其實就是一種資源,需要一個主鍵來識別資源的唯一性,領域可以是個頁面,也可以是個頁面上的按鈕
什么是權限:權限可以是“可見”,可以是“只讀”,也可以是“可用”
2、頁面設計
不多說了,先上圖吧。整個系統是基於BootStrap定制開發的,頁面效果還行。
首頁展示
功能1:操作權限項
操作權限項分為兩類:操作按鈕權限、字段訪問權限。
1.列表頁
2.表單頁
功能2:功能模塊
1.列表頁
2.表單頁
功能3:角色管理
1.列表頁
2.角色分配權限
2.1功能模塊
2.2 操作按鈕
2.3 數據權限
2.4 字段權限
功能4:崗位管理
1.列表頁
2.表單頁
功能5:組織機構
1.列表頁
2.分配角色
功能6:用戶管理
1.列表頁
2.表單頁
3.分配角色
4.用戶授權
4.1 功能模塊
4.2 操作按鈕
4.3 數據權限
4.4 字段權限
功能7:數據字典
1.列表頁
2.表單頁
3.管理字典類別
功能8:系統參數
功能9:緩存設置
選擇要更新的用戶
功能10:登陸日志
功能11:操作日志
操作日志明細
功能12:系統日志
查看系統日志
功能13:代碼生成
1.命名空間
2.類庫命名
3.保存目錄
4.代碼生成
如果大家感興趣,就在右下角幫我【推薦】一下吧,在這里謝謝大家了。我接下來就按照模塊列表一篇一篇的來寫。最后我創建了一個技術交流群:263169088,歡迎大家來交流。