解析大型.NET ERP系統 權限模塊設計與實現


權限模塊是ERP系統的核心模塊之一,完善的權限控制機制給系統增色不少。總結我接觸過的權限模塊,以享讀者。

1 權限的簡明定義

ERP權限管理用一句簡單的話來說就是:誰 能否 做 那些 事。

文句 含義 說明
部門+崗位職責 也可以不與部門崗位綁定,省略角色定義。
能否 能(True) 否(False) 用0或1,true/false表示能否執行
增加/刪除/修改/查詢/統計/打印/過帳 權限對象
哪些 通用的/本人的/本組別的/本部門的/本公司的/其他的/多帳套的 范圍:行政部的辦公文具采購申請,PMC運行物料需求計划產生采購部的物料采購計划。
數據(如客戶、供應商、訂單、報表等)  

關於”能否”文句,支持組合拼接。比如有三個權限對象,分別是增加,刪除,修改。用戶A只有修改權限,用數字1表示有權限,則A用戶的權限字符串可以表示為001,這樣可以滿足動態增加權限對象的需求。

關於部門崗位職責,也就是通常說的角色(Role),因為角色的含義着重在於實際的業務理解,系統很難控制到這樣細節的地方,我們的ERP系統省略了角色表,將權限與用戶直接綁定。

 

2 權限的分類

1) 系統權限 System Login  是否登入系統,能執行哪些模塊,可以看到哪些操作菜單項。對沒有權限操作的界面應該隱藏或變灰,避免提示”對不起,您沒有權限”。

2) 功能權限 Module/Function  對模塊和功能能否有執行權限,功能是系統執行權限控制的基本單元。對模塊權限的操作,可批量設置模塊下功能的權限,程序最終進行判斷的地方還是以功能權限為依據。

2) 數據權限 Data/Field  對功能涉及到的數據是否有增刪查改的權限,能否編輯和查看相同單據其它用戶的數據,能否查看與編輯特殊字段的數據(字段權限),常常是指金額類字段。比如采購模塊的采購收貨與倉庫模塊的采購收貨,后者應該會隱藏與關聯的采購訂單中的物料價格信息。字段權限可以與用戶或用戶組別綁定。

 

3  權限設計方法:基於角色的訪問機制(Role-Based Access Control,RBAC)

先設計用戶組別,對用戶組別分配權限,再創建用戶綁定到用戶組別。表與其字段定義:

用戶組別(用戶組別編碼,已取消)

用戶組別模塊(用戶組別編碼,模塊編碼,模塊名稱,新增權限,刪權限除,修改權限,過帳權限,打印權限)

用戶組別模塊功能(用戶組別編碼,模塊編碼,功能編碼,新增權限,刪權限除,修改權限,過帳權限,打印權限)

用戶既可以按照模塊批量增加權限,也可單獨的逐個功能增加權限。涉及字段權限的地方需要單獨設置。

 

4  優化權限模塊設計

1)  考慮多帳套(多數據庫)情況下,授權的一致性。要求提取業務數據庫中的相似數據到框架數據庫中。

2)系統集成。需要考慮與LDAP/DBMS系統的集成性。與域集成時,可以實現免登錄直接進入系統。當與其它數據庫集成時,根據需要設計各自的用戶提供程序,比如OracleUserProvider,MySQLUserProvider,分別實現連接到Oracle和MySQL數據庫中執行權限判斷。

3)  與硬件設備集成。執行權限判斷時自動識別硬件設備,比如Smart Card智能卡或加密狗。

4)  用戶密碼需要加鹽或是MD5加密,或是DES可逆算法加密。拒絕明文存儲密碼,密碼丟失后可用密碼重置功能重設密碼,考慮強密碼策略,包含字母數字和特殊字符組成的密碼。

5)  登錄限制,限制用戶必須在指定的區域(IP地址范圍,局域網子網,域)才能登錄使用。

6)  對沒有權限的功能,應該隱藏或是變灰,以解決權限難題。比如按鈕沒有變灰或隱藏,點擊按鈕后才進行權限判斷,提示”對不起,您沒有權限”,這類提示很不友好,應該要預先判斷權限。

7) 考慮用戶密碼過期,超過一定時間范圍后用戶必須修改密碼以增加安全性。

8)  管理員分配初始密碼時,考慮密碼生成工具,生成隨機字符串密碼,符合Windows強密碼供管理員使用。

 

5  業務邏輯中的權限控制

ERP系統中有一些權限控制的地方,比如價格控制,信用控制,流程控制等。這些控制不在通用權限系統中考慮。

舉例說明,ERP系統中的用戶權限。

模塊 權限 說明
系統 可進入所有公司 否則只能進入指定的公司帳套
系統 可執行多帳套操作 A公司的銷售單產生B公司的采購單
銷售

可使用所有客戶

需要使用指定的客戶
銷售 允許關閉報價單 報價單關閉后不能再生成銷售單
銷售 隱藏銷售價格 銷售功能中隱藏價格字段
銷售 允許銷售單修改單價 銷售功能中不允許修改單價
銷售 銷售功能中執行價格下限控制 銷售功能中執行總金額控制,比如客戶A的信用上限20萬,向客戶A賣出貨物價值超過20萬時,單據無法通過記帳或審核。
采購 可使用所有供應商 否則只能用指定的供應商
采購 收貨單不支持超額收貨 收貨單收貨數量為100,是否支持收貨120個數量
采購 隱藏進倉成本 隱藏物料進倉價格(先進先出,平均成本)
采購 隱藏采購價格 隱藏物料采購價格

這些參數控制分布在ERP系統的各個模塊功能中,無法實現抽象化設計。

 

6 權限對象 動態權限

以上設計中,硬性規定了七種權限,它們是增加,刪除,修改,查詢,統計,打印,過帳。如果要增加其它的權限則會涉及到比較多的改動。考慮將權限對象本身設計為可動態增加的,比如我需要增加一個數據導出權限(Export),只需要在權限對象表中增加一行記錄,並分配可以執行此權限的用戶或用戶組別,增加代碼判斷即可完成權限系統的開發。動態權限在大型管理系統中很常見,預先設計的固定的權限在實施時無法滿足實際需求時,考慮動態權限設計方法。
用友的系統就是把權限設計為一個代碼,用一個表保存用戶具有的權限的代碼。

 

7  權限申請與批核生效,權限注銷

為避免權限申請人與IT之間的信息溝通不暢,定義權限申請批核和生效流程。

由需要何種權限的用戶提出申請,填寫權限申請表單,選擇需要登入的模塊和功能,再經由用戶所在的部門負責人審批,權限審批通過后,由IT部門確定,權限申請審批生效。

當用戶不再需要登入系統或某種權限時,IT部門直接將用戶注銷或刪除相應的權限,避免審計問題。

 

8  鑽石白菜理論

買白菜時,通常為了白菜價格是八毛還是一塊與小販爭論不休,斤斤計較;買鑽石時,卻為了追求好看,高貴,毫不在乎鑽石的價格,只求貴的,好看的鑽石。
設計權限模塊以實用為主,不追求過度設計,不追求更完美的設計。
能滿足現有的客戶需求,對未來客戶增加需要不涉及太多的改動,這樣的權限系統設計就是合理合適的。


免責聲明!

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



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