因爲RoleProvider接口似乎只將角色視爲簡單字符串,所以我想知道是否有任何非用戶可以在每個用戶的基礎上爲角色應用可選值的方法。擴展ASP.NET角色提供者
我們當前的登錄管理系統將角色實現爲鍵值對,其中值部分是可選的,通常用於闡明或限制角色授予的權限。例如,「編輯者」角色可能包含用戶'barry',但對於'barry',它將有一個可選值'raptors',系統會解釋這意味着Barry只能編輯下面提交的文章'猛禽'類。
我在其他地方看到了一個建議來簡單地創建額外的分隔角色,比如'editor.raptors'或somesuch。這並不是真的很理想,因爲它會大大增加角色的數量,我可以說這將是一個非常難以推銷的替代我們目前的實現(這也是非常不理想,但具有定製的優勢與我們的用戶數據庫一起工作)。
我可以告訴你,上面提到的連接方法會涉及很多繁瑣的字符串分割和部分匹配。
有沒有更好的方法?
編輯:我最初的目標是在內置ASP.NET功能使用較多。例如,通過Web.config中的<authorization/>
元素控制訪問。據我所知,這樣做需要自己實施角色。除了這一限制之外,我們目前的系統認證概念似乎很適合。
回答mnemosyn的問題
- 是。我們有一個用於用戶,應用程序及其授權的中央數據庫。這是一個核心繫統,並沒有圍繞它。
- 目前我們的系統不是分層的,實際上需要花費很多精力來維護。創建應用程序時,會定義一組授權(例如'admin','user','poweruser','看門人','keymaster'等)。然後,將用戶與具有可選值的授權關聯起來,以實現用戶和(特定於應用程序)授權的獨特組合。
- 你能詳細說明你說的這些'類別'嗎?
我已更新我的問題以解決您提出的一些問題。 – 2010-03-29 03:07:33