权限访问控制设计
一、前言
之前的博客一直都還沒寫到框架的實現(xiàn)及權限系統(tǒng),今天開始寫我的權限系統(tǒng),我以前做過的項目基本上都有權限管理這個模塊,但各個系統(tǒng)都會有一些不太一樣,有些簡單點,有些稍微復雜一點,一句話,我們做的系統(tǒng)都離不開這個權限系統(tǒng)。所以網(wǎng)上很多人嘗試做一個通用的權限系統(tǒng),不評論他們做的怎么樣,只是說在網(wǎng)上能找到的直接能用的應該不多,適用的并且能集成到項目中的就更少了,所以還是考慮自己做一個,不一定很通用,但足夠自己用的權限系統(tǒng)。
二、需求分析
關于權限系統(tǒng)的文章網(wǎng)上多如牛毛,很多都是基于角色的訪問控制(RBAC)設計。但是發(fā)現(xiàn)完全實現(xiàn)RBAC的理論其實不一定好用,我想做一款適合自己的。所以首先我們必要明確我們要去實現(xiàn)哪些東西。
1、權限資源
??? a.菜單權限? 經(jīng)理和業(yè)務員登陸系統(tǒng)擁有的功能菜單是不一樣的
??? b.按鈕權限? 經(jīng)理能夠審批,而業(yè)務員不可以
??? c.數(shù)據(jù)權限? A業(yè)務員看不到B業(yè)務員的單據(jù)
??? d.字段權限? 某些人查詢客戶信息時看不到客戶的手機號或其它字段
2、用戶,應用系統(tǒng)的具體操作者,我這里設計用戶是不能直接分配權限的,必須要分配一個角色,角色中再分配權限,如果某個用戶權限比較特殊,可以為他專門建一個角色來應用解決,因為如果用戶也可以分配權限系統(tǒng)就會復雜很多。
3、角色,為了對許多擁有相似權限的用戶進行分類管理,定義了角色的概念,以上所有的權限資源都可以分配給角色,角色和用戶N:N的關系。
4、機構,樹形的公司部門結構,國內公司用的比較多,它實際上就是一個用戶組,機構和角色N:N的關系,機構和用戶也設計成N:N的關系,也就是說有時候一個用戶可以從屬于兩個部門,這種情況在我們客戶需求中的確都出現(xiàn)過。
當然除了上面提到的主要對象還包括以下對象
5、菜單
6、按鈕?
7、授權代碼 以前我做的項目中控制數(shù)據(jù)權限有以下兩種:
??? a.用部門編碼來控制,只能查詢到自己所屬部門的數(shù)據(jù)
??? b.用項目編碼來控制,只能查詢到自己所屬項目的數(shù)據(jù)。
這樣就有一個問題,我到底要用什么字段來控制數(shù)據(jù)權限呢,所以我們就設計了一個授權代碼,如果你是用機構來控制數(shù)據(jù)權限,那么你可以把授權代碼建成跟機構一樣的樹,如果用項目編碼控制,可以把它建成項目樹,用其它字段控制都一樣,所以會比較靈活,也把機構或項目解放出來了。
8、數(shù)據(jù)字典
9、系統(tǒng)參數(shù)
10、日志查詢 登陸日志、操作日志(xx人xx時間對xx對象做了xx操作 自定義的)、系統(tǒng)日志(系統(tǒng)運行錯誤記錄等 log4net輸出的)
?
三、設計實現(xiàn)
1、表結構設計
?
2 程序設計
我還是采用mvc4.0 + web api + easyui + knockout去實現(xiàn)。實際上之前我就實現(xiàn)的差不多,最近也一直在花時間更新完善。
這個權限系統(tǒng)太大了,這一篇肯定是說不完的,我這里就先總體上說了一下設計思路,接下每一篇寫具體實現(xiàn),一篇一個功能,大家期待我的下一篇吧。
3、UI設計
不多說了,先上圖吧,我在第一篇博客中貼過以前的版本,最近也有一些更新,再貼一次吧,這次截圖比較詳細點,也配了一些文字的說明介紹。
功能1:菜單導航
【菜單導航】1:包括新增修改刪除功能,直接在grid中編輯
【菜單導航】2:選擇圖標
【菜單導航】3:選擇頁面按鈕 定義這個功能有只些按鈕
【菜單導航】4:管理按鈕庫 增刪改
?
功能2:組織結構
【組織結構】1:圖形化的樹結構,可以新增編輯刪除節(jié)點
【組織結構】2:編輯節(jié)點
【組織結構】3:設置角色
功能3:授權代碼
【授權代碼】樹形grid 可以增添編輯刪除
?
功能4:角色管理
【角色管理】1:直接在grid中 增添編輯刪除
【角色管理】2:點編輯權限彈出角色極限窗口,點擊選擇菜單權限
【角色管理】3:編輯按鈕權限,grid中只會出現(xiàn)菜單權限中選中的行,每個功能有哪些按鈕在菜單中已定義好,這里只要勾選按鈕即可
【角色管理】4:編輯數(shù)據(jù)權限 可以多選,但只有一個默認值,該角色新增的業(yè)務單據(jù)的授權代碼為默認的授權代碼。
【角色管理】5:編輯字段權限 grid中只會出現(xiàn)菜單權限中選中的行,直接在允許或拒絕中輸入字段名,多個字段用逗號隔開
【角色管理】6:點擊管理成員,彈出此窗口
【角色管理】7:成員管理 點擊添加按鈕
?
功能5:用戶管理
【用戶管理】1:左邊機構可以過濾,直接在grid中增刪改查用戶
【用戶管理】2:設置機構 可多選,這里機構錄入的太多了,出現(xiàn)了滾動條,少些會好看點。
【用戶管理】3:設置角色 可多選
【用戶管理】4:用戶設置 用戶登陸后的一些配置信息,比如指定用戶的桌面,默認的項目,不同的系統(tǒng)可能會有不同的需求,所以這里設計可添加刪除的,右上角下拉出來的[個人設置]頁面也指向這里的數(shù)據(jù)
?
功能6:數(shù)據(jù)字典
【數(shù)據(jù)字典】1:左邊類別樹可過濾,左邊是樹形grid,可以有層級關系,直接在grid中編輯
【數(shù)據(jù)字典】2:點擊管理類別,類別可在彈出的grid中增刪改查
?
功能7:系統(tǒng)參數(shù)
【系統(tǒng)參數(shù)】直接grid中編輯,設計了一個是否可編輯字段,只能編輯 是否可編輯為true的參數(shù)
?
功能8:操作日志
【操作日志】1:登陸日志
【操作日志】2:業(yè)務操作記錄
【操作日志】3:系統(tǒng)日志
【操作日志】4:系統(tǒng)日志 查看系統(tǒng)日志
四、后述
如果大家感興趣,就在右下角幫我【推薦】一下吧,謝謝大家了。我接下來就按照功能列表一篇一篇的來寫,下一篇就先開始寫菜單管理。
這里整個系統(tǒng)都是采用我的zephyr.net框架開發(fā),應用mvc4.0 webapi easyui knockoutjs開發(fā)的實現(xiàn)的。
很多朋友私信我一些問題,所以干脆我創(chuàng)建了一個技術交流QQ群:328510073,歡迎大家來交流。
?
轉載于:https://www.cnblogs.com/wala-wo/p/5119310.html
總結
- 上一篇: c# 调用Microsoft XPS D
- 下一篇: 科大讯飞 文字转语音