1

在MVC3我們可以使用[授權]屬性,指定用戶必須在管理員角色來訪問任何控制器動作在類,如在下面的例子限制訪問一個控制器...在MVC3中如何通過基於角色的授權來限制對區域的訪問?

[Authorize(Roles = "Administrator")] 
public class MyDefaultController : Controller 
{ 
    // Controller code here 
} 

但是,如何限制對MVC3中的整個Area的訪問,而無需爲Area內的每個Controller類指定[Authorize]屬性?

回答

2

您可以使用RouteConstraints這樣做的:

寫一個類是這樣的:

 public class AreaRouteConstraint : IRouteConstraint 
     { 
      public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
      { 
       return Validate(values["area"]; 


      } 
     } 

實施Validate方法是你。

,並使用它像這樣:

routes.MapRoute(
name: "yourRouteName", 
url: "Url", 
defaults: new { controller = "controller", action = "action" , area="area" }, 
constraints: new AreaRouteConstraint() 
);