2010-12-15 6 views

Antwort

41

Sie können entlang der Linien von etwas tun (als Ersatz für Domain mit der Domain, die Sie gegen die Authentifizierung sind oder Entfernen der Parameter insgesamt):

public bool DoesUserExist(string userName) 
{ 
    using (var domainContext = new PrincipalContext(ContextType.Domain, "DOMAIN")) 
    { 
     using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName)) 
     { 
      return foundUser != null; 
     } 
    } 
} 

Um zu überprüfen, ob ein Benutzer existiert. Dies stammt aus dem Namespace System.DirectoryServices.AccountManagement und Assembly.

können Sie weitere Informationen bei http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.aspx

finden Sie möchten mehr in Principal überprüfen, wie es interessante Methoden zur Authentifizierung von Benutzerdaten und solche hat.

+2

+1 Was ich tun würde, nur besser erklärt. Sie können auch den Doamin-Namen weglassen, um die lokale Domain zu verwenden - praktisch, wenn Sie nur die eine Domain haben und den Namen nicht kennen müssen. – Grhm

+0

Danke, es hat geholfen .. der neue Namespace System.DirectoryServices.AccountManagement half .. !! Nun, ich bin bei zweiten Parameter "DOMAIN" etwas vertraut ..? Müssen wir es geben oder nicht, wenn wir den Domänennamen von Active Directory angeben? ... – msbyuva

+0

Sie können diesen Parameter löschen, wenn Sie eine Verbindung zur Standarddomäne des Systems herstellen möchten. Andernfalls müssen Sie die Domäne angeben, mit der Sie eine Verbindung herstellen möchten. –

7

Ich würde den Namespace System.DirectoryServices.AccountManagement verwenden.

string UserID = "grhm"; 
bool userExists = false; 

using (var ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    using (var user = UserPrincipal.FindByIdentity(ctx, UserID)) 
    { 
     if (user != null) 
     { 
      userExists = true; 
      user.Dispose(); 
     } 
    } 
} 

Siehe http://msdn.microsoft.com/en-us/library/bb344891.aspx für weitere Informationen

+0

Danke, es hat funktioniert, ja der neue Namensraum. System.DirectoryServices.AccountManagement gemacht sehr einfach ... – msbyuva

+0

Ich sehe in einigen Beispielen gibt es einen anderen Parameter "DOMAIN" für den PrincipleContext ... Müssen wir es verwenden oder nicht? .. – msbyuva

+0

Sie können andere Parameter verwenden, um anzugeben Domäne, auf die Sie sich beziehen möchten - wie in der anderen Antwort. Ich sehe Joshua hat das schon oben erklärt ... – Grhm