目前權限管理系統很多,但通用、靈活、符合現代企事業單位實際工做須要的很少。現有的權限系統絕大多數都是以模塊爲核心,而本權限模型將摒棄此類廣泛的作法,將以組織機構爲核心來進行權限系統的設計,由於這更符合實際的業務需求,也具備不少沒法比擬的優勢。首先來看以組織機構爲核心的權限模型的邏輯結構圖:html
經過上圖你可輕鬆的設計出相應的數據庫結構,而此權限模型體系所具備的優勢以下:數據庫
一、以組織機構爲核心進行權限的管理和分配等,更加符合現代企事業的實際須要,包括多機構、組織、部門、崗位、人員等。api
二、實現一人對應多個組織實體、崗位的同時,還能對賬號進行統一的登陸、驗證和受權。緩存
三、支持功能權限、動做權限、數據權限、管理權限等。服務器
四、權限繼承,某個組織的全部下屬組織均能繼承本組織的權限。數據結構
五、實現分級受權,某個組織可對下屬組織實現權限範圍內的分級權限管理,對於組織機構層次不少的企業或政府機構來講特別適用,這可經過上圖中的權限繼承來實現。mvc
六、一般狀況下經過角色對組織進行權限分配,在這裏,組織自己其實也同時充當了「用戶組」的職責,並且在操做上還更加方便;固然,還可直接對某個特定組織繞開角色單獨進行權限的分配,例如可對某個組織追加或禁用具備的角色權限範圍以外的一些特定權限。數據庫設計
七、實現組織回收站功能,必要時可進行物理刪除和恢復,作到系統中有後悔藥可用。性能
八、美觀的界面,出色的性能與多系統、多數據庫的支持。 大數據
上述的權限模型體系,還應有以下考量:
一、組織機構按特定的規則建立,例如組織下可包含組織、機構、 部門、崗位、人員,但部門下只能包含子部門、崗位和人員,而崗位下只能是人員等等;同時需對數據庫表進行優化並適當冗餘,保證每一個組織可快速查詢所包含的下屬組織及類型。
二、經過人員成員和用戶相關聯,人員成員可分配至組織下的任意節點,這在實現了一人多崗的同時,也實現了統一的用戶基本資料管理和權限分配。每一個用戶有且只能有一個主要崗位,其餘崗位均爲從屬崗位,對人員成員的信息管理將自動更新到人員成員管理的用戶上。
三、在組織下進行角色的關聯, 經過路徑就可快速查詢到某個組織所屬的角色及繼承的角色,管理權限和數據權限的實現思想和此相似。
四、經過人員成員和權限的管理,可在角色範圍外對用戶的權限進行分配和管理,這有助於大大增長系統在權限控制上的靈活性,也有助於實現真正意義上的分級受權。
五、管理權限,本質上是一種數據權限,指的是某個組織下的人員成員能夠管理的組織的業務數據,管理權限的目標是實現跨部門協做,管理權限可脫離本組織所對應的組織機構樹節點。經過在業務系統中增長人員成員的完整路徑字段,這樣每一個用戶登陸後均能經過自身管理的組織完整路徑查詢到所管理的下屬組織的業務數據。同時完整路徑字段應由一系列惟一的ID值組合而成,須要保證這個完整路徑的惟一性並儘可能作到不變性;同時提供相應的事件機制,保證即便完整路徑有修改時,也能通知業務系統進行相應的處理,有效保證業務數據和權限模型數據之間的一致性。
六、至於數據權限,可經過指定自定義的查詢過濾條件等,爲每一個角色和人員指定特殊的數據權限;動做權限和數據權限只能對應到具體的功能權限而不能獨立存在。
七、本權限模型實現了多個業務系統共用一個數據庫數據,並保證管理上互不交叉;同時可配置表的個性化名稱;支持擴展字段等個性化功能,爲二次開發用戶提供必要的靈活性和個性化支持接口。
八、在性能上,首先須要考慮的是數據庫設計的適當冗餘,例如對組織機構增長了路徑字段,這個字段的值須要根據組織所在的上下級關係生成,業務系統中可經過存儲該字段的值實現高性能的數據權限和管理權限功能;其次在界面上對樹形結構、網格數據等儘可能使用服務器端的延遲查詢和分頁處理,在大數據量下可大大提升系統的響應速度;最後還要對不常常變化的數據進行適當的緩存處理。
九、本權限模型的實現難點主要在業務規則的標準化和冗餘字段數據進行一致性的維護上。例如前面提到的路徑數據,以及狀態字段等(如當禁用了某個組織後,毫無疑問也須要禁用全部下屬的組織)。對於多數據庫支持,還需考慮不一樣數據庫之間SQL語法和特性上的差別。
十、本權限模型應能提供必要的權限控制表達式解析組件,這有助於提供終端用戶使用本系統時的靈活性和易用性。例如可在界面配置只能查詢自身數據、或父組織數據、或指定完整路徑的業務數據過濾表達式等,然後臺能自動把這些表達式解析成 SQL 表達式或 LINQ 表達式,對特定的業務數據進行過濾查詢。
十一、本權限模型還應提供功能完備、簡單易用的 API 接口和必要的界面組件,例如可顯示指定ID的全部下屬組織機構樹等界面組件,這樣只需簡單配置下ID就能顯示全部下屬組織,開發人員無需關心底層的數據結構,可大大提升業務系統的開發速度。
近期將提供本權限模型的預覽版 Demo。
附 - 權限模型+流程專家:http://pjdemo.yellbuy.com/
附 - 代碼工廠 MVC 插件 Demo 地址:http://mvcdemo.yellbuy.com/
附 - 代碼工廠 WPF 插件 介紹:http://www.cnblogs.com/gyche/archive/2012/06/02/2531121.html
附件下載一 - 代碼工廠:YbSoftwareFactory V2 下載,運行環境-.NET 4.0。
附件下載二 - 代碼工廠 WinForm 插件 Demo:YbRapidSolution for WinForm Demo下載:運行環境-.NET 4.0。服務層部署在 Internet 上,,可直接運行;如需在本地部署,除了安裝數據庫外,就是修改配置文件,這裏再也不詳述。