背景:MVC2完全新增。有C#經驗,但有限的網絡體驗。關於細粒度授權和MVC2的問題
我需要更多細粒度的訪問權限,而不僅僅是將角色分配給用戶。用戶可能在樹中的0+點處具有角色。
/
/Europe
/England
/France
/USA
例如,用戶可能是「歐洲」下所有論壇的主持人,並且可以在法國發布新聞。
兩個例子控制器有行動,因爲這些:
ForumController:
public ActionResult DeletePost(int id) { ... }
NewsController:
[HttpPost]
public ActionResult Post(int treeID, ...) { ... }
我應該怎樣處理這個?從我收集的Membership + RoleProvider無法做到這一級別的細粒度控制。 以前我寫過自定義的用戶/角色/授權系統,它支持所有這些,但它與「標準」控件(如LoginView)不兼容。
的目標將是具有允許像這樣的訪問角色:
NewsAdmin
添加新聞
編輯新聞
刪除新聞
NewsPoster
- 添加新聞
因此,新聞CONTROLER的行動後應檢查:是否有用戶「添加新聞」 - 訪問,他試圖張貼?
我真的很想用某種方式指定這個屬性,所以實際的操作代碼可能更乾淨,只是假設調用者具有適當的訪問權限。
希望這個問題是有道理的,我可以得到一些關於在哪裏閱讀的指針。 (哦,我相信這個問題已經在某些變體中得到了回答,我似乎無法找到它,如果您覺得這些答案可能對您有幫助,我不介意單鏈接回復。閱讀)
我考慮使用類似於NewsAdmin_Europe_AddNews的東西,但這會阻止我輕鬆添加對NewsAdmin角色的「DeleteComments」訪問權限。我需要創建NewsAdmin_%s_DeleteComments。 – Thomas 2010-07-29 14:52:36
他們是不同的角色。每個權限使用一個角色。角色提供者是圍繞這個想法構建的。澄清:對你來說,「NewsAdmin」是一個角色。這很好,但它與「NewsAdmin_Europe_DeleteComments」不同,它對提供商很重要。提供者的角色概念既包括你認爲的角色,也包括你認爲的「權限」。 – 2010-07-29 15:32:51
你完全正確。對我而言,NewsAdmin是角色,「添加,編輯等」是構成該角色的單獨權限。 從概念上講,角色提供者概念似乎是不可修復的,不可維護的。 (雖然我希望是錯的)。 在真實世界的應用程序中,如何爲具有「NewsAdmin_Europe_ *」角色的所有用戶添加「NewsAdmin_Europe_DeleteComments」角色? 另一個問題是,它會混亂一個用戶界面,使每個葉子在歐洲的4個角色,而不是隻有在X,Y和Z的「NewsAdmin」。 感謝您的時間。我將閱讀一些 – Thomas 2010-07-29 17:59:55