1

在 MVC3 中,我们可以使用 [Authorize] 属性限制对控制器的访问,指定用户必须具有管理员角色才能访问类中的任何控制器操作,如下例所示...

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

但是,如何限制对 MVC3 中整个区域的访问,而不为区域内的每个控制器类指定 [Authorize] 属性?

4

1 回答 1

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 ()
);
于 2012-11-17T11:12:54.173 回答