1

...MVC3에서 역할 기반 권한으로 영역에 대한 액세스를 제한하는 방법은 무엇입니까? 우리는 사용자가 다음의 예에서와 같이 클래스의 모든 컨트롤러 액션에 액세스하려면 관리자 역할에 있어야 지정하여 [권한 부여] 속성을 사용하여 컨트롤러에 대한 액세스를 제한 할 수 있습니다 MVC3에서

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

그러나 영역 안의 각 컨트롤러 클래스에 대해 [Authorize] 특성을 지정하지 않고 MVC3의 전체 영역에 대한 액세스를 제한하는 방법은 무엇입니까?

답변

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() 
);