1. 程式人生 > >我的許可權系統設計實現MVC4 WebAPI EasyUI Knockout 一

我的許可權系統設計實現MVC4 WebAPI EasyUI Knockout 一

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

一、前言

 

之前的部落格一直都還沒寫到框架的實現及許可權系統,今天開始寫我的許可權系統,我以前做過的專案基本上都有許可權管理這個模組,但各個系統都會有一些不太一樣,有些簡單點,有些稍微複雜一點,一句話,我們做的系統都離不開這個許可權系統。所以網上很多人嘗試做一個通用的許可權系統,不評論他們做的怎麼樣,只是說在網上能找到的直接能用的應該不多,適用的並且能整合到專案中的就更少了,所以還是考慮自己做一個,不一定很通用,但足夠自己用的許可權系統。

 

二、需求分析

 

關於許可權系統的文章網上多如牛毛,很多都是基於角色的訪問控制(RBAC)設計。但是發現完全實現RBAC的理論其實不一定好用,我想做一款適合自己的。所以首先我們必要明確我們要去實現哪些東西。

 

1、許可權資源
    a.選單許可權  經理和業務員登陸系統擁有的功能選單是不一樣的
    b.按鈕許可權  經理能夠審批,而業務員不可以
    c.資料許可權  A業務員看不到B業務員的單據
    d.欄位許可權  某些人查詢客戶資訊時看不到客戶的手機號或其它欄位

 

2、使用者,應用系統的具體操作者,我這裡設計使用者是不能直接分配許可權的,必須要分配一個角色,角色中再分配許可權,如果某個使用者許可權比較特殊,可以為他專門建一個角色來應用解決,因為如果使用者也可以分配許可權系統就會複雜很多。

 

3、角色,為了對許多擁有相似許可權的使用者進行分類管理,定義了角色的概念,以上所有的許可權資源都可以分配給角色,角色和使用者N:N的關係。

 

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

 

當然除了上面提到的主要物件還包括以下物件

 

5、選單

 

6、按鈕 

 

7、授權程式碼 以前我做的專案中控制資料許可權有以下兩種:
    a.用部門編碼來控制,只能查詢到自己所屬部門的資料
    b.用專案編碼來控制,只能查詢到自己所屬專案的資料。
這樣就有一個問題,我到底要用什麼欄位來控制資料許可權呢,所以我們就設計了一個授權程式碼,如果你是用機構來控制資料許可權,那麼你可以把授權程式碼建成跟機構一樣的樹,如果用專案編碼控制,可以把它建成專案樹,用其它欄位控制都一樣,所以會比較靈活,也把機構或專案解放出來了。

 

8、資料字典

 

9、系統引數

 

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

 

 

 

三、設計實現

 

1、表結構設計

 

image

 

 

 

2 程式設計

 

我還是採用mvc4.0 + web api + easyui + knockout去實現。實際上之前我就實現的差不多,最近也一直在花時間更新完善。
這個許可權系統太大了,這一篇肯定是說不完的,我這裡就先總體上說了一下設計思路,接下每一篇寫具體實現,一篇一個功能,大家期待我的下一篇吧。

 

3、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

 

四、後述

 

如果大家感興趣,就在右下角幫我【推薦】一下吧,謝謝大家了。我接下來就按照功能列表一篇一篇的來寫,下一篇就先開始寫選單管理。
這裡整個系統都是採用我的zephyr.net框架開發,應用mvc4.0 webapi easyui knockoutjs開發的實現的。
很多朋友私信我一些問題,所以乾脆我建立了一個技術交流QQ群:328510073,歡迎大家來交流。


<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述