2011-01-17 18 views
1

Ich mag würde die ValidateUser Methode des ActiveDirectoryMembershipProvider verwenden, um zu validieren, dass ein Benutzer in AD existiert.ActiveDirectoryMembershipProvider zur Validierung eines Benutzers

ich den Benutzernamen und das Passwort in einer Form nehme. Ich möchte dann den Anbieter instanziiert und ValidateUser

<add name="AspNetActiveDirectoryMembershipProvider" 
    type="System.Web.Security.ActiveDirectoryMembershipProvider" 
    connectionStringName="ADConnection" 
    attributeMapUsername = "userPrincipalName" /> 

nenne ich ersetzen nur echte Werte mit Test für die Post ..

<add name="ADConnection" connectionString="LDAP://test.test.test.com/dc=test,dc=com" /> 

zu tun, was ich tun will, muss ich zur Verfügung stellen müssen ein Benutzername und ein Passwort an den Provider, damit er sich an erster Stelle verbinden kann, dh ein Systemaccount .. und sobald er eingerichtet ist, kann ich dann den Benutzer überprüfen, den ich validieren möchte?

Danke, J

Antwort

10

Mit dem ASP.NET-Mitgliedschaftssystem ist der ganze Punkt, den Sie nicht eine Provider-Klasse oder etwas instanziiert müssen - diejenige, die Sie definiert haben sofort unter den Membership verfügbar statische Instanz

Also in Ihrem Fall, stellen Sie sicher, die Config richtig ist, und dann so etwas wie:

if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text)) 
    FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked); 
else 
    Msg.Text = "Login failed. Please check your user name and password and try again."; 

Die Membership die notwendige Klasse, die Sie definiert haben - rufen Sie einfach die statischen Methoden auf sie und damit fertig sein! :-)

Update: es scheint, sollen Sie auf einfache Weise mehrere Mitgliedschaftsanbieter in diese Richtung hier zu instanziiert in der Lage:

if (e.UserName.IndexOf("@contoso.com") >= 0) 
    { 
     e.Authenticated = Membership.Providers["ContosoSqlProvider"].ValidateUser(e.UserName, e.Password); 
    } 
    else if (e.UserName.IndexOf("@fabrikam.com") >= 0) 
    { 
     e.Authenticated = Membership.Providers["FabrikamSqlProvider"].ValidateUser(e.UserName, e.Password); 
    } 
    else 
    { 
     e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password); 
    } 

Also im Grunde können Sie einen bestimmten Mitgliedschaftsanbieter erhalten, indem es durch Membership.Providers["FabrikamSqlProvider"] Zugriff und dann Methoden aufrufen, wie .ValidateUser().

Die Basis Membership.ValidateUser wird einfach den Mitgliedschaftsanbieter verwenden, den Sie als Standard definiert haben - aber es hindert Sie nicht daran, andere zu verwenden!

+0

Danke, aber es ist nicht der einzige Anbieter, den ich verwenden möchte, ich möchte den SqlMembershipProvider auch verwenden, um andere Benutzer gegen einen SQL-Speicher zu validieren, also muss ich ihn instanziieren, er kann standardmäßig den SQL-Server abholen eine . – John

+0

@John: aktualisiert meine Antwort - ich hoffe, ich habe die Lösung für Ihre Frage (es sei denn, Sie haben es bereits selbst gefunden). –

Verwandte Themen