2009-09-18 3 views

답변

3

사용자 정의 RoleProvider를 작성합니다. 이 역할 공급자는 web.config에 등록해야하는 유일한 공급자입니다.

Initialize 메서드에서는 코드에서 원하는 공급자를로드하고 사용자 지정 공급자의 개인 멤버로 저장할 수 있습니다.

역할 공급자의 해당 지점부터는 선택한 공급자의 단순한 프록시입니다. 예 :

public class CustomRoleProvider : RoleProvider 
{ 
    //The real role provider; 
    private RoleProvider _provider; 

    public CustomRoleProvider() 
    { } 

    public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config) 
    { 
     base.Initialize(name, config); 
     //In here initalise your Role Provider at run time 
     //This is just demo code... obviously you would do something a little more 
     //intelligent 
     SqlRoleProvider provider = new SqlRoleProvider(); 
     provider.Initialize("sql", config); 
     _provider = provider; 
    } 

    public override void AddUsersToRoles(string[] usernames, string[] roleNames) 
    { 
     _provider.AddUsersToRoles(usernames, roleNames); 
    } 
    public override bool DeleteRole(string roleName, bool throwOnPopulatedRole) 
    { 
     return _provider.DeleteRole(roleName, thrownOnPopulatedRole); 
    } 
    //other proxy methods would also be here... 
} 

당신은 여러 공급자를 지원하고 업체의 당신이 사용할 수있는 런타임에 선택이 확장하는 방법을 볼 수 있었다.

질문에 대한 답변이 있습니까?

+1

그래, 그게 ... 내가 실제로하고있는 일은 ... 그런데 이런 유형의 프록시에 열중하지 않았다. 같은 유형의 자아를 파생시키고 구성하는 것은 문제를 일으킬 수 있고 추악합니다. 하지만, 내가 지금까지 생각해 낼 수있는 유일한 것입니다. 그래서 +1. –

관련 문제