새로운 ASP.NET MVC 응용 프로그램에 내 사용자 지정 권한 시스템을 접착하고 싶습니다. 나는 앱을 위해 내 자신의 커스텀 AuthorizeAttribute를 작성하는 데 상당한 노력을 기울였다. 나 또한 내 자신의 사용자 지정 MembershipProvider 및 RoleProvider 구현을 작성했습니다. 이 모든 작업은 사용자가 맡은 역할을 점검해야 할 때까지 아름답게 작동합니다. 나는이 모든 그래서 나는 단지 내 컨트롤러에서이 작업을 수행 할 수 있습니다를했고, 나는 프로토 타입으로 내 코드에 맞게 복고풍하기 VS2010의 기본 MVC 템플릿을 사용 :내 MVC 앱에서 사용자 정의 RoleProvider GetUserRoles 메소드에 둘 이상의 값을 전달하는 방법은 무엇입니까?
[CustomAuth(Roles='X')]
public ActionResult DoSomething()
내 사용자 정의 시스템은 비록 조금 괴팍스러운 것입니다. 나는 SQL 데이터베이스를 호출하지 않는다. CheckPassword, GetPermissions, WebLogin의 3 가지 메소드를 제공하는 간단한 웹 서비스입니다. WebLogin은 CheckPassword와 GetPermissions를 하나의 호출로 간단하게 래핑합니다. ValidateUser 내에서 WebLogin을 사용하지 않으면 MembershipProvider.ValidateUser (userName, password) 내에서 TestPassword를 호출했으며이 호출이 성공했을 때 UserID를 다시 얻었습니다. 그렇지 않으면 실패하고 NULL이 반환됩니다.
문제는 RoleProvider 구현을 호출 할 때입니다. 추상 클래스는 단일 매개 변수가 userName 인 GetRolesForUser를 정의했습니다. 내 GetPermissions() 메소드에는 하나의 userName 이상이 필요합니다. 그것은과 같이 정의된다 :
GetPermissions(privateKey,userName)
분명히, 다음 RoleProvider 메소드 내에서 이것을 호출하면 작동하지 않을. 상자에서 지원되는 메서드에 privateKey를 전달할 수 없습니다.
public override string[] GetRolesForUser(string username)
내 사용자 지정 RoleProvider에서 내 자신의 사용자 지정 메서드를 호출 할 수 있습니까?
알다시피,이 실제로 잘 작동합니다. 도움을 주셔서 감사합니다 – PerryM
이것이 작동하는 동안 한 가지 부작용은 내 web.config에서 해당 옵션을 설정할 때 내 사용자 정의 GetRolesForUser 메소드가 쿠키의 역할을 캐시하지 않는 것처럼 보입니다. – PerryM