1

MVC3 では、次の例のように、[Authorize] 属性を使用してコントローラーへのアクセスを制限し、ユーザーがクラス内のコントローラー アクションにアクセスするには管理者ロールに属している必要があることを指定できます。

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

ただし、Area 内の各 Controller クラスに [Authorize] 属性を指定せずに、MVC3 の Area 全体へのアクセスを制限するにはどうすればよいですか?

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 に答える