2011-01-29 2 views
2

내 MVC2 응용 프로그램에 대한 사용자 지정 MembershipProvider를 성공적으로 구현할 수있었습니다. 내 자신의 User 테이블과 Role 테이블이 있습니다.MVC 권한 부여 역할 및 IPrincipal - 어떻게 작동합니까?

지금 내 문제는 [Authorize (Roles = "blah")] 속성을 넣을 때 작동하지 않는다는 것입니다. 조금만 수색했지만 결정적인 답을 찾지 못했습니다. 즉,이 역할 인증은 어떻게 작동합니까? 내 web.config는 표준 AspNet 역할 공급자를 사용합니다.

필자는 내 User.cs 클래스에 IPrincipal 인터페이스를 구현해야한다는 것을 이해합니다. 즉, IsInRole을 확인하는 코드를 추가해야합니다.

내 질문이 맞습니까? 프레임 워크는 내 사용자 정의 사용자 객체를 얻는 방법을 알고 그 방법을 알고 있습니까? 내 이해는 Asp.Net 인증 & 승인 조각 MembershipUser 함께 작동합니다.

는 생각, 링크가 크게 감상 할 수있다거나, 들으

+0

내가 그러나 당신이 함께 무언가를 할 거라고 ASP.NET 및 WCF에서,이 MVC 어떻게 작동하는지 확실하지 않다 즉, 대해 isUserInRole 방법을 가지고 있기 때문에 그래서, 그것은 모두가 의미가 있습니다 [Authorize (Roles = "RoleName")] 대신 [PrincipalPermission (SecurityAction.Demand, Role = "RoleName")] 행을 사용하십시오. – bleepzter

답변

1

는 역할 테이블/코드는 RoleProvider의 구현 팁을 어떤? IPrincipal이 web.config에 구성된 기본 RoleProvider에 대해 작동한다고 생각합니다.

forum post은 필요에 따라 자신의 IPrincipal을 구현하기 위해 수행해야 할 작업에 대해 설명합니다.

1

좋아, 내가 알아 냈다고 생각하는데, 나는 조금 눈이 멀었다.

고유 한 사용자 지정 사용자 테이블 및 역할 테이블을 사용하여 자체 사용자 지정 MembershipProvider를 만들었으므로 사용자 지정 RoleProvider를 구현해야만하는 이유가 있습니다. 내가 그랬어되면 RoleProvider이

public override bool IsUserInRole(string username, string roleName) 
    { 
     IUserRepository userRepository = GetUserRepository(); 
     User user = userRepository.Retrieve(username); 

     // and here, my User class implements IPrincipal 
     if (user != null && user.IsInRole(roleName)) 
       return true; 
     else 
      return false; 
    } 
관련 문제