2010-11-26 45 views
3

我在ASP.NET MVC中設計了一個應用程序,通常保護動作的方法是通過保護整個動作的屬性AuthorizeASP.NET MVC的動態安全性

[Authorize(Roles = "Managers")] 
public AtionResult Info(int employeeId) 

但是,在我們的設計中,應用程序是高度數據驅動的。可能允許對一組數據執行操作,而對另一組數據則不允許。

 
//OK 
http://host/Employee/Info/102 

//Not OK 
http://host/Employee/Info/105 

我們應該爲這種設計安全使用什麼模式?

回答

0

您可以使用派生自ActionFilterAttribute類的自定義屬性來修飾您的動作方法,並在OnActionExecuting方法中檢查傳入請求中的數據,如果不允許,則拋出安全異常/重定向/做任何您需要的操作。

4

您可以創建派生的授權屬性來執行任何您想要的操作。

public class DynamicSecurity : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //go to db 
     return true; 
    } 
}