2012-12-13 3 views
5

내 권한 부여 논리를 사용하여 계층 적 역할을 수행 할 수 있도록 내 [Authorize] 특성을 만들려고합니다.MVC4 권한 부여 권한을 초과합니다. 역할을 어떻게 수행 할 수 있습니까?

누군가 컨트롤러 또는 동작에서 [Authorize(Roles = "Admin")]을 수행하는 경우 AuthorizeCore 함수에서 "Admin"문자열을 얻으려면 어떻게해야합니까?

이 코드를 사용하고 있습니다 :

public class Authorize : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //authorize role logic 
      if (true) 
       return true; 

     return false; 
    } 
    } 

MVC4, .NET 4.5, C#을, VS 2012

답변

8

그것은 당신이 직면 한 공통의 일을 종료됩니다.

는 MVC 3에서 일하고으로 게시물이 추천 MVC4에서 작동합니다 : - ASP.NET MVC - Alternative to Role Provider?

protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     bool isAdmin; 
     if(Roles.Contains("Admin")) 
      isAdmin = true; 

     return isAdmin ; 
    } 
+1

덕분에이를 볼 수 있습니다

public class Authorize : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { var allowedRoles = Roles; } } 

, 나는 역할이었다 인상했다의 역할 현재 로그인 한 사용자, 그것은 ['에 전달 된 어떤 것 생각하지 않았다 대답 ( – Kyle

+0

@user1308743) 또한 아무런 문제도 잊지 말고 대답하는 것이 좋습니다.) –

+0

대답을 투표하기 위해 시간 제한이 만료되기를 기다렸습니다. =) – Kyle

1

역할은 공공 재산이다. 이 작업을 수행 할 수 있어야한다 :

public class Authorize : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 

     if(Roles.Contains("MyRole")) 
      return true; 

     return false; 
    } 
} 

아니면 당신이 허용 된 역할의 목록을해야 할 경우

0

을 할 필요가 무엇이든, 당신은 단순히 역할 속성을 얻을 수 있습니다. 속성 장식에 지정된 문자열을 나열합니다. 당신은 AuthorizeAttribute definition