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

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

1 權限的簡明定義

ERP權限管理用一句簡單的話來講就是:誰 可否 作 那些 事。數據庫

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

關於」可否」文句,支持組合拼接。好比有三個權限對象,分別是增長,刪除,修改。用戶A只有修改權限,用數字1表示有權限,則A用戶的權限字符串能夠表示爲001,這樣能夠知足動態增長權限對象的需求。安全

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

 

2 權限的分類

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

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

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

 

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

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

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

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

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

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

 

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  鑽石白菜理論

買白菜時,一般爲了白菜價格是八毛仍是一塊與小販爭論不休,斤斤計較;買鑽石時,卻爲了追求好看,高貴,絕不在意鑽石的價格,只求貴的,好看的鑽石。 設計權限模塊以實用爲主,不追求過分設計,不追求更完美的設計。 能知足現有的客戶需求,對將來客戶增長鬚要不涉及太多的改動,這樣的權限系統設計就是合理合適的。

相關文章
相關標籤/搜索