個人權限系統設計實現MVC4 + WebAPI + EasyUI + Knockout(一)

1、前言

以前的博客一直都還沒寫到框架的實現及權限系統,今天開始寫個人權限系統,我之前作過的項目基本上都有權限管理這個模塊,但各個系統都會有一些不太同樣,有些簡單點,有些稍微複雜一點,一句話,咱們作的系統都離不開這個權限系統。因此網上不少人嘗試作一個通用的權限系統,不評論他們作的怎麼樣,只是說在網上能找到的直接能用的應該很少,適用的而且能集成到項目中的就更少了,因此仍是考慮本身作一個,不必定很通用,但足夠本身用的權限系統。web

2、需求分析

關於權限系統的文章網上多如牛毛,不少都是基於角色的訪問控制(RBAC)設計。可是發現徹底實現RBAC的理論其實不必定好用,我想作一款適合本身的。因此首先咱們必要明確咱們要去實現哪些東西。api

一、權限資源
    a.菜單權限  經理和業務員登錄系統擁有的功能菜單是不同的
    b.按鈕權限  經理可以審批,而業務員不能夠
    c.數據權限  A業務員看不到B業務員的單據
    d.字段權限  某些人查詢客戶信息時看不到客戶的手機號或其它字段mvc

二、用戶,應用系統的具體操做者,我這裏設計用戶是不能直接分配權限的,必需要分配一個角色,角色中再分配權限,若是某個用戶權限比較特殊,能夠爲他專門建一個角色來應用解決,由於若是用戶也能夠分配權限系統就會複雜不少。框架

三、角色,爲了對許多擁有類似權限的用戶進行分類管理,定義了角色的概念,以上全部的權限資源均可以分配給角色,角色和用戶N:N的關係。ui

四、機構,樹形的公司部門結構,國內公司用的比較多,它實際上就是一個用戶組,機構和角色N:N的關係,機構和用戶也設計成N:N的關係,也就是說有時候一個用戶能夠從屬於兩個部門,這種狀況在咱們客戶需求中的確都出現過。編碼

固然除了上面提到的主要對象還包括如下對象spa

五、菜單.net

六、按鈕  設計

七、受權代碼 之前我作的項目中控制數據權限有如下兩種:
    a.用部門編碼來控制,只能查詢到本身所屬部門的數據
    b.用項目編碼來控制,只能查詢到本身所屬項目的數據。
這樣就有一個問題,我到底要用什麼字段來控制數據權限呢,因此咱們就設計了一個受權代碼,若是你是用機構來控制數據權限,那麼你能夠把受權代碼建成跟機構同樣的樹,若是用項目編碼控制,能夠把它建成項目樹,用其它字段控制都同樣,因此會比較靈活,也把機構或項目解放出來了。3d

八、數據字典

九、系統參數

十、日誌查詢 登錄日誌、操做日誌(xx人xx時間對xx對象作了xx操做 自定義的)、系統日誌(系統運行錯誤記錄等 log4net輸出的)

 

3、設計實現

一、表結構設計

image

 

2 程序設計

我仍是採用mvc4.0 + web api + easyui + knockout去實現。實際上以前我就實現的差很少,最近也一直在花時間更新完善。
這個權限系統太大了,這一篇確定是說不完的,我這裏就先整體上說了一下設計思路,接下每一篇寫具體實現,一篇一個功能,你們期待個人下一篇吧。

三、UI設計

很少說了,先上圖吧,我在第一篇博客中貼過之前的版本,最近也有一些更新,再貼一次吧,此次截圖比較詳細點,也配了一些文字的說明介紹。

功能1:菜單導航
菜單導航】1:包括新增修改刪除功能,直接在grid中編輯
image

【菜單導航】2:選擇圖標
image

【菜單導航】3:選擇頁面按鈕 定義這個功能有隻些按鈕image

【菜單導航】4:管理按鈕庫 增刪改
image

 

功能2:組織結構
【組織結構】1:圖形化的樹結構,能夠新增編輯刪除節點
image

【組織結構】2:編輯節點
image

【組織結構】3:設置角色
image


功能3:受權代碼
【受權代碼】樹形grid 能夠增添編輯刪除
image

 

功能4:角色管理
【角色管理】1:直接在grid中 增添編輯刪除
image

【角色管理】2:點編輯權限彈出角色極限窗口,點擊選擇菜單權限image

【角色管理】3:編輯按鈕權限,grid中只會出現菜單權限中選中的行,每一個功能有哪些按鈕在菜單中已定義好,這裏只要勾選按鈕便可
image

【角色管理】4:編輯數據權限 能夠多選,但只有一個默認值,該角色新增的業務單據的受權代碼爲默認的受權代碼。
image

【角色管理】5:編輯字段權限 grid中只會出現菜單權限中選中的行,直接在容許或拒絕中輸入字段名,多個字段用逗號隔開
image

【角色管理】6:點擊管理成員,彈出此窗口
image

【角色管理】7:成員管理 點擊添加按鈕
image

 

功能5:用戶管理
【用戶管理】1:左邊機構能夠過濾,直接在grid中增刪改查用戶
image

【用戶管理】2:設置機構 可多選,這裏機構錄入的太多了,出現了滾動條,少些會好看點。
image

【用戶管理】3:設置角色 可多選
image

【用戶管理】4:用戶設置 用戶登錄後的一些配置信息,好比指定用戶的桌面,默認的項目,不一樣的系統可能會有不一樣的需求,因此這裏設計可添加刪除的,右上角下拉出來的[我的設置]頁面也指向這裏的數據image

 

功能6:數據字典
【數據字典】1:左邊類別樹可過濾,左邊是樹形grid,能夠有層級關係,直接在grid中編輯
image

【數據字典】2:點擊管理類別,類別可在彈出的grid中增刪改查
image

 

功能7:系統參數
【系統參數】直接grid中編輯,設計了一個是否可編輯字段,只能編輯 是否可編輯爲true的參數
image

 

功能8:操做日誌
【操做日誌】1:登錄日誌
image

【操做日誌】2:業務操做記錄
image

【操做日誌】3:系統日誌
image

【操做日誌】4:系統日誌 查看系統日誌
image

4、後述

若是你們感興趣,就在右下角幫我【推薦】一下吧,謝謝你們了。我接下來就按照功能列表一篇一篇的來寫,下一篇就先開始寫菜單管理。 這裏整個系統都是採用個人zephyr.net框架開發,應用mvc4.0 webapi easyui knockoutjs開發的實現的。不少朋友私信我一些問題,因此乾脆我建立了一個技術交流QQ羣:羣一:328510073(已滿),羣二:167813846,歡迎你們來交流。

相關文章
相關標籤/搜索