2011-07-28 20 views
2

我想使用內置的ASP.NET成員資格和角色提供程序來創建一個限制每個經過身份驗證的用戶可以查看和編輯的系統。我應該如何將用戶與域對象關聯?

該軟件已具有「項目」和「組」的概念。每個項目都屬於一個組。

系統的用戶實際上屬於同一組。這目前不在我的域模型中表達。

我想擴展到這些用戶的兩個級別的權限,即查看和編輯。如果他們在一個組中,我希望他們能夠查看該組中的項目。如果他們擁有該組的編輯權限,我希望他們能夠編輯該組的項目。

用戶通常屬於1組,但在某些時候可能屬於多個組。用戶可能對多個組具有「查看」權限,但只能對其可查看的一個(或某些)組編輯權限。

我不知道如何解決這個問題。我應該爲每個組創建2個角色(使用asp.net角色提供者),即Group1View,Group1Edit等?或者我應該創建另一個表,創建一個aspnet_Users表和組表之間的關係,第三列標識他們的特權級別?

最後,我想執行權限檢查有點類似於史蒂夫·史密斯在博客這裏:http://stevesmithblog.com/blog/favor-privileges-over-role-checks/

感謝您可能必須提供任何輸入!

回答

2

我會創建一個自定義成員資格和角色提供程序來實現這一點,幷包裝您所指的安全組件。我只會使用「成員資格和角色」提供的服務來提供您所需的最小請求,而不會依賴於您的整個應用程序安全性。

角色提供程序無法很好地滿足您的需求,並且具有層次結構複雜性的自定義安全性。您提到的內容(包括名稱)可以工作,並且自定義角色提供者可以從您提到的組件中派生出用戶可以訪問的角色的名稱。但是,我只會使用它來處理內置的框架功能(登錄控件,站點地圖控件或任何您使用的內容),而其他所有內容都使用您自己的安全設置。

長遠來看,角色提供商最終會因爲您的需求而限制太多。

HTH。

相關問題