基于URL方式的權限模型
對于B/S結構的權限控制,有N多種實現方式的權限模型,但很多都是非常的復雜,以前在做這塊時一直就做的不是很好,考慮的過于復雜,其實應該遵循Simple原則先做出自己能想到的最簡單的方案,再逐漸的重構,一種基于URL方式的權限模型就非常簡單,很容易理解,也是非常的有效。
模型仍然是基于RBAC,遵循User---->Role---->Permission---->Resource+Operate,在URL方式的權限模型中認為所有對于系統的操作均通過URL進行,其實在B/S結構中這樣認為也沒有什么不可的,既然是這樣那么模型就很容易建立了,例如對于用戶管理模塊,有查看、新增、編輯、刪除這四種操作方式,那么就可以在系統中建立Resource=用戶管理,Operate分別為查看、新增、編輯、刪除,每種操作相應的對應一個url,這個在MVC框架中就更好去做了,通常一種動作對應了一個command類,那么其url可能是view.cmd等,^_^,這樣用戶管理的幾種操作權限就配置好了,系統管理員則相應的可增加用戶管理員、用戶管理查看員等來配置相應的權限,在實現的模型中判斷則可通過類似user.doPrivilege("用戶管理","查看")來判斷用戶是否具有權限,這種模型對控制菜單樹的顯示、操作、模塊的功能按鈕的顯示都具有有效的作用。
但對于具體業務細節的權限控制,還是得通過代碼控制來實現的,如控制某某部門的管理員只可對該部門下的權限進行管理,其實想想這個也是可以在url方式的權限模型中實現的,通過url的正則表達方式等來實現,呵呵,不去具體說了,至于對模塊產生的數據權限的控制,可以通過數據類型的方式來控制,如某模塊產生的數據類型分為公共、私有幾種類型,可通過配置角色能訪問該模塊何種類型的數據來實現。
基于URL方式的權限模型好處在于容易理解,能夠快速實現,當然,還有基于action方式的權限模型等等,其實相應來講基于URL方式的和基于action方式的基本相似,而且基于URL方式的更容易理解和實現。
模型仍然是基于RBAC,遵循User---->Role---->Permission---->Resource+Operate,在URL方式的權限模型中認為所有對于系統的操作均通過URL進行,其實在B/S結構中這樣認為也沒有什么不可的,既然是這樣那么模型就很容易建立了,例如對于用戶管理模塊,有查看、新增、編輯、刪除這四種操作方式,那么就可以在系統中建立Resource=用戶管理,Operate分別為查看、新增、編輯、刪除,每種操作相應的對應一個url,這個在MVC框架中就更好去做了,通常一種動作對應了一個command類,那么其url可能是view.cmd等,^_^,這樣用戶管理的幾種操作權限就配置好了,系統管理員則相應的可增加用戶管理員、用戶管理查看員等來配置相應的權限,在實現的模型中判斷則可通過類似user.doPrivilege("用戶管理","查看")來判斷用戶是否具有權限,這種模型對控制菜單樹的顯示、操作、模塊的功能按鈕的顯示都具有有效的作用。
但對于具體業務細節的權限控制,還是得通過代碼控制來實現的,如控制某某部門的管理員只可對該部門下的權限進行管理,其實想想這個也是可以在url方式的權限模型中實現的,通過url的正則表達方式等來實現,呵呵,不去具體說了,至于對模塊產生的數據權限的控制,可以通過數據類型的方式來控制,如某模塊產生的數據類型分為公共、私有幾種類型,可通過配置角色能訪問該模塊何種類型的數據來實現。
基于URL方式的權限模型好處在于容易理解,能夠快速實現,當然,還有基于action方式的權限模型等等,其實相應來講基于URL方式的和基于action方式的基本相似,而且基于URL方式的更容易理解和實現。
posted on 2005-09-01 19:43 BlueDavy 閱讀(2066) 評論(3) 編輯 收藏 所屬分類: 系統設計