nJupiter .DataAccess.Ldap은 구성 파일에서 동시에 여러 서버를 구성하도록 지원합니다. 나는 당신이이 같은 nJupiter.DataAccess.Ldap.config에 사용하려는 모든 서버 구성 제안 :
<configuration>
<ldapServers>
<ldapServer value="MyServer1"><!-- config goes here --></ldapServer>
<ldapServer value="MyServer2"><!-- config goes here --></ldapServer>
</ldapServers>
</configuration>
을 그리고 당신의 Web.config의 모든 서버에 대해 하나 개는 MembershipProvider/RoleProvider을 구성 할 수 있습니다; 이 같은 :
<system.web>
<membership defaultProvider="MyProvider1">
<providers>
<clear/>
<add name="MyProvider1" ldapServer="MyServer1" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
<add name="MyProvider2" ldapServer="MyServer2" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
</providers>
</membership>
</system.web>
그런 다음 System.Web.Security.Membership.Providers["MyProvider1"]
및 System.Web.Security.Membership.Providers["MyProvider2"]
를 사용하여 런타임에 공급자 사이에서 변경할 수 있습니다.
ASP.NET은 하나의 단일 기본 공급자 만 지원합니다. 따라서 다른 사용자를 다른 공급자로 리디렉션하려고하지만 여전히 일반 ASP.NET 아키텍처를 사용하려는 경우 올바로 동적으로 리디렉션하는 MembershipProvider/RoleProvider를 배치하는 것이 좋습니다 공급자.
public class RedirctingMembershipProvider : System.Web.Security.MembershipProvider {
public override MembershipUser GetUser(string username, bool userIsOnline) {
if(username.Contains("@MyDomain1"){
return Membership.Providers["MyProvider1"].GetUser(username, userIsOnline);
}
if(username.Contains("@MyDomain2"){
return Membership.Providers["MyProvider2"].GetUser(username, userIsOnline);
...
다음과 같이의 web.config의 기본 공급자로이 공급자 등록 :
<system.web>
<membership defaultProvider="RedirctingMembershipProvider">
<providers>
<clear/>
<add name="RedirctingMembershipProvider" type="MyNameSpace.RedirctingMembershipProvider,MyAssembly" />
<add name="MyProvider1" ldapServer="MyServer1" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
<add name="MyProvider2" ldapServer="MyServer2" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
</providers>
</membership>
</system.web>
을 몇 가지 의사 코드는