2010-02-02 16 views
8

Was sind die Unterschiede (hinter den Kulissen) zwischen Page.User.Identity und Request.LogonUserIdentity? Nicht die Unterschiede in Typ, Name, etc, aber die Unterschiede in, wie sie hinter den Kulissen implementiert werden (d. H. Man ruft Windows xxx api und der andere ruft asp.net xxx api ...).Unterschiede zwischen Page.User.Identity vs Request.LogonUserIdentity

+0

Sie scheinen Ihre eigene Frage beantwortet zu haben. Gibt es etwas, wonach Sie suchen? LogonUserIdentity gibt das WindowsIdentity-Objekt für den aktuell angemeldeten Benutzer zurück. – sarvesh

Antwort

18

Es hängt davon ab, welchen Mechanismus Sie verwenden, um Benutzer zu authentifizieren, und welche Einstellungen Sie für Identitätswechsel haben.

Zum Beispiel unter dem VS-Entwicklungsserver, die Formularauthentifizierung, die Standard-SQL-Mitgliedschaftsanbieter und den folgenden Code verwenden:

// m_LoggedIn is a Literal control on the page: 
m_LoggedIn.Text = string.Format("<br />Page.User.Identity: {0} " + 
           "<br />Request.LogonUserIdentity: {1}", 
           Page.User.Identity.Name, 
           Request.LogonUserIdentity.Name); 

bekomme ich folgende Ausgabe:

Page.User. Identität: zhaph

Request.LogonUserIdentity: [Computername] \ Ben

Die erste Zeile (Page.User.Identity) ist das Formularauthentifizierungskonto, mit dem ich mich bei der Site angemeldet habe, die zweite Zeile ist die Windows-Identität, unter der die Anfrage ausgeführt wird - da ich den Identitätswechsel nicht aktiviert habe Windows-Anmeldung als das Konto, unter dem der Webserver ausgeführt wird.

In Bezug auf die API, HttpRequest.LogonUserIdentity in die Windows Klasse aufrufen, die immer ein Konto Windows-Benutzer wird darstellen, während Page.User ein Objekt zu schaffen, die IPrinciple implementiert, die Sie einen Benutzer mit einer Reihe darstellen können von verschiedene Backing-Speicher - zum Beispiel die SQL-Datenbankstruktur, die vom MembershipProvider bereitgestellt wird.

Verwandte Themen