2015-06-03 48 views
0

其他人在MVC應用程序中如何執行細粒度的訪問控制?即用戶可能與多個對象有關並且對每個對象具有不同的訪問需求。這可以通過使用asp.net標識聲明/角色來實現嗎?還是我必須扮演我自己的角色?如何在asp.net MVC應用程序中執行細粒度訪問控制。

如果我需要推出自己的產品,是否有任何設計模式可以遵循?

回答

0

毫無疑問,有很多方法可以做到這一點,但asp.net-MVC引線本身的AuthorizeAttribute的可擴展性,如:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] 
public sealed class ActionPermissionAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     // Override OnAuthorization, not AuthorizeCore as AuthorizeCore will force user login prompt rather than inform the user of the issue. 
     var controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName; 
     var action = filterContext.ActionDescriptor.ActionName; 

     bool authorised = ... // Check permissions here 
     if (!authorised) 
      throw new UnauthorizedAccessException("You are not authorised to perform this action."); 

     base.OnAuthorization(filterContext); 
    } 
} 

這可以被應用到控制器(或基本控制器)所以不需要每一個動作。

實際檢查權限可以像想要的那樣簡單或複雜 - 例如,數據庫中的存儲控制器+操作+活動目錄組將允許動態更改權限。

相關問題