2010-05-05 32 views
4

執行:ASP.NET MVC的安全:如何檢查控制器方法允許在給定一個ASP.NET MVC控制器類聲明當前用戶的perrmissions

public class ItemController : Controller 
{ 
    public ActionResult Index() 
    { 
     // ... 
    } 

    public ActionResult Details() 
    { 
     // ... 
    } 

    [Authorize(Roles="Admin, Editor")] 
    public ActionResult Edit() 
    { 
     // ... 
    } 

    [Authorize(Roles="Admin")] 
    public ActionResult Delete() 
    { 
     // .. 
    } 
} 

我需要反思的方法列表這個類可以用當前用戶的權限調用。

請分享在這種情況下可以做什麼的一些想法。

回答

3

好新問題想沿着線的東西:

new ReflectedControllerDescriptor(typeof(ItemController)).GetCanonicalActions() 

可以用來返回所有可用操作的列表。我在工作中沒有ASP.NET MVC,所以我不能真正檢查ActionDescriptor是否包含一些參數,它說明哪些成員可以執行它們。

http://msdn.microsoft.com/en-us/library/system.web.mvc.actiondescriptor_members%28v=VS.90%29.aspx

這是ActionDescriptor的成員,你也許能找到的東西在裏面。今晚我會看到,如果我能弄明白,這讓我感到很好奇。


有沒有通用的用戶登錄/認證適用於所有應用系統,因此這真的是不可能創造一個「通用的解決方案」。您可以創建自己的用戶登錄和授權類,然後將自己的註釋添加到要執行的方法中,但它將具有與asp.net mvc系統相同的限制,僅限於您的登錄/授權系統(或任何人擴展該系統)。

+0

非常感謝,隨着你的提示,我設法解決了這個問題。 – Gart 2010-05-09 17:54:34