2009-05-19 27 views
11

Ich bin in einer ASP.NET-Anwendung mit Windows-Authentifizierung.Abrufen des Anzeigenamens des Benutzers von WindowsIdentity

Ich benutze HttpContext.Current.User.Identity.Name, um den Benutzernamen des aktuell authentifizierten Benutzers abzurufen, der mir einen Benutzernamen im Format DOMÄNE \ BENUTZERNAME abruft. Das funktioniert gut.

Gibt es eine einfache Möglichkeit, dies zu einem Anzeigenamen (z. B. "Richard Gadsden") wie dem, der oben in meinem Startmenü in XP erscheint, zu konvertieren?

Wenn ich muss, ich denke, ich kann durch System.DirectoryServices gehen und in ADSI abfragen, aber sicherlich gibt es einen einfacheren Weg?

Antwort

1

Ich denke, ADSI ist der Weg zu gehen. Es ist ziemlich einfach. Ich sehe keinen leichteren Weg. Sie fragen einfach nach LDAP://<SID=user-sid> und erhalten die Eigenschaft des definierten Namens.

13

Es ist ein einfacher Weg, jetzt, verwenden System.DirectoryServices.AccountManagement

Imports System.DirectoryServices.AccountManagement 

... 

    Dim CurrentUser As UserPrincipal = UserPrincipal.Current 
    Dim DisplayName As String = CurrentUser.DisplayName 
+1

Dies hilft nur, wenn Sie UserPrincipal aus dem WindowsIdentity-Objekt abrufen können. Die Frage hängt davon ab, an einem WindowsIdentity-Objekt zu arbeiten - und den Benutzernamen daraus zu extrahieren. Ich kann sehen, wie man ein WindowsPrincipal von einem WindowsIdentity-Objekt erhalten kann, aber nicht finden kann, wie man ein UserPrincipal erhält. – Veverke

+0

Ich habe [hier] (http://stackoverflow.com/questions/2808955/can-ig-get-active-directory-attributes-from-the-windowsprincipal/2809817#2809817) herausgefunden, dass Sie ein UserPrincipal einfach basieren können auf einer Domain. Deine Antwort hilft also (mein Downvote ist jetzt jedoch gesperrt ... Bitte editiere deine Antwort mit jeder kleinen Änderung, damit ich meinen Downvote entfernen kann (SO's Richtlinien ...). – Veverke

Verwandte Themen