내 MVC 앱의 Custom RoleProvider GetUserRoles 메소드에 둘 이상의 값을 전달하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/2223741

문제

사용자 정의 권한 시스템을 새로운 ASP.NET MVC 앱에 붙이고 싶습니다. 나는 앱에 대해 내 자신의 Custom AwrideAttribute를 작성하는 상당한 양의 작업을 수행했습니다. 또한 내 자신의 Custom Membershipprovider 및 RoleProvider 구현을 작성했습니다. 이 모든 것이 아름답게 작동합니다. 내 사용자가 참여한 역할을 확인해야 할 때까지. 나는이 모든 것을했기 때문에 컨트롤러에서 단순히 이것을 할 수 있었고 VS2010의 기본 MVC 템플릿을 사용하여 코드를 프로토 타입으로 맞추기 위해 레트로를 사용했습니다.

[CustomAuth(Roles='X')]
public ActionResult DoSomething()

내 커스텀 시스템은 약간 끔찍합니다. 나는 SQL DB에 전화하지 않습니다. CheckPassword, GetPermissions, Weblogin의 3 가지 방법을 제공하는 간단한 웹 서비스입니다. Webblogin은 단순히 CheckPassword와 getpermissions를 하나의 통화로 랩핑합니다. ValidateUser 내에서 Weblogin을 사용하지 않을 때는 작동하지 않았을 때 멤버쉽 프로비더 (validateuser) 내에서 testpassword를 호출 했으며이 호출이 성공하면 userId를 되 찾을 것입니다. 그렇지 않으면 실패하고 널을 되 찾을 것입니다.

문제는 Roleprovider를 구현할 때입니다. 초록 클래스는 단일 사용자 이름의 매개 변수로 GetRolesforUser를 정의했습니다. getPermissions () 메소드는 작동하려면 단일 사용자 이름 이상이 필요합니다. 그렇게 정의됩니다.

GetPermissions(privateKey,userName)

분명히 다음 roleprovider 메소드 내에서 이것을 호출하는 것은 작동하지 않습니다. Box에서 지원되는 방법으로 PrivateKey를 전달할 수 없습니다.

public override string[] GetRolesForUser(string username)

내 자신의 커스텀 롤레프로더 내에서 내 자신의 커스텀 메소드를 호출하는 것이 불가능합니까?

도움이 되었습니까?

해결책

역할 공급자를 사용자 정의 유형으로 캐스팅 할 수 있으므로 방법에 액세스 할 수 있습니다. 기능은 인터페이스 외부에 있기 때문에 응용 프로그램을 역할 공급자에게 엄격하게 연결시킵니다. 이는 아마도 귀하의 목적에 적합합니다.

    RoleProvider rp = Roles.Provider;
    (rp as MyRoleProvider).GetPermissions(privateKey,userName);

다른 팁

나는 그것이해야한다고 생각한다 :

(RoleProvider as MyRoleProvider).GetPermissions(privateKey,userName);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top