在控制器和操作上[Authorize]
上的屬性限制訪問是非常棒的。可能在ASP.NET MVC 2的區域級[授權]?
是否有可能爲MVC 2中的整個區域做同等操作?在哪裏我可以限制區域範圍內的訪問取決於角色/用戶/無論在中心位置,而不是亂丟所有控制器?
在控制器和操作上[Authorize]
上的屬性限制訪問是非常棒的。可能在ASP.NET MVC 2的區域級[授權]?
是否有可能爲MVC 2中的整個區域做同等操作?在哪裏我可以限制區域範圍內的訪問取決於角色/用戶/無論在中心位置,而不是亂丟所有控制器?
您可以使用裝有該屬性的基礎控制器,該區域中的所有控制器都來自該屬性。
對於MVC 3及以上:
我剛開始對這個......但到目前爲止,這是爲我工作不錯。
我創建了一個自定義的AuthorizeAttribute類,並將其添加到RegisterGlobalFilters函數中。
在CustomAuthorizeAttribute我檢查基於它在該地區的各種條件。
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomAuthorizeAttribute());
filters.Add(new HandleErrorAttribute());
}
}
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var routeData = httpContext.Request.RequestContext.RouteData;
var controller = routeData.GetRequiredString("controller");
var action = routeData.GetRequiredString("action");
var area = routeData.DataTokens["area"];
var user = httpContext.User;
if (area != null && area.ToString() == "Customer")
{
if (!user.Identity.IsAuthenticated)
return false;
}
else if (area != null && area.ToString() == "Admin")
{
if (!user.Identity.IsAuthenticated)
return false;
if (!user.IsInRole("Admin"))
return false;
}
return true;
}
}
*額頭摑*那一定會做到這一點!謝謝! – kdawg 2010-08-27 19:08:12