Freigeben über


Benutzeridentifizierung für ASP.NET-Profileigenschaften

Aktualisiert: November 2007

Das ASP.NET-Benutzerprofilfeature wurde entworfen, um Informationen bereitzustellen, die sich speziell auf den aktuellen Benutzer beziehen. Profile können sowohl mit authentifizierten als auch mit anonymen (nicht authentifizierten) Benutzern verwendet werden.

Authentifizierte Benutzer

Standardmäßig ist ein Benutzerprofil der Benutzeridentität zugeordnet, die in der User-Eigenschaft des aktuellen HTTP-Kontexts gespeichert ist. Auf diesen Kontext kann über die HttpContext.Current-Eigenschaft zugegriffen werden. Die Benutzeridentität ist bestimmt durch:

  • Das ASP.NET-Formularauthentifizierungssystem, das nach erfolgreicher Authentifizierung die Benutzeridentität festlegt.

  • Windows- oder Passport-Authentifizierung, die nach erfolgreicher Authentifizierung die Benutzeridentität festlegt.

  • Benutzerdefinierte Authentifizierung. Dabei werden das Abrufen der Benutzeranmeldeinformationen und das Festlegen der Benutzeridentität manuell verwaltet.

Die ASP.NET-Formularauthentifizierung umfasst das Erstellen eines Anmeldeformulars und die Aufforderung an den Benutzer, Anmeldeinformationen einzugeben. Sie können die ASP.NET-Anmeldesteuerelemente verwenden, um das Anmeldeformular zu erstellen und die Formularauthentifizierung durchzuführen. Das Schreiben von Code ist nicht erforderlich. Informationen über das Verwenden von ASP.NET-Features für die Authentifizierung von Benutzern finden Sie unter Übersicht über ASP.NET-Anmeldungssteuerelemente und Verwalten von Benutzern durch Mitgliedschaft. Informationen über Formularauthentifizierung finden Sie unter Gewusst wie: Implementieren der einfachen Formularauthentifizierung.

Anonyme Benutzer

Profile können auch mit anonymen Benutzern verwendet werden. Die Unterstützung für anonyme Profile ist standardmäßig nicht aktiviert. Deshalb müssen Sie sie explizit aktivieren. Zusätzlich müssen Sie bei der Definition von Profileigenschaften in der Datei Web.config die Eigenschaften explizit und einzeln für anonyme Benutzer verfügbar machen. Profileigenschaften unterstützen den anonymen Zugriff nicht standardmäßig, da Profile auch mit authentifizierten Benutzern verwendet werden können und sich viele Eigenschaften auf persönliche Informationen beziehen, die für anonyme Benutzer nicht verfügbar sind.

Wenn die anonyme Identifikation aktiviert ist, erstellt ASP.NET für die Benutzer beim ersten Besuch der Site eine eindeutige Identifizierung. Die eindeutige Benutzeridentifizierung wird in einem Cookie auf dem Computer des Benutzers gespeichert. So kann der Benutzer bei jeder Seitenanforderung identifiziert werden. Die Standardablaufzeit des Cookies wird auf ungefähr 70 Tage festgelegt und wird jeweils erneuert, wenn ein Benutzer die Site besucht. Wenn der Computer des Benutzers keine Cookies akzeptiert, kann die Identifikation des Benutzers als Teil der URL der Seitenanforderung verwaltet werden. Allerdings geht die Identifikation nach dem Schließen des Browsers verloren.

Informationen über das Aktivieren der anonymen Identifizierung finden Sie unter anonymousIdentification-Element (ASP.NET-Einstellungsschema).

Migrieren von anonymen Profilinformationen

Es kann Fälle geben, in denen die Anwendung die Personalisierungsinformationen zunächst für einen anonymen Benutzer verwaltet, sich dieser Benutzer später aber bei der Anwendung anmeldet. In diesem Fall wechselt die Identität des Benutzers von der zugewiesenen anonymen Benutzeridentität zu der Identität, die der Authentifizierungsprozess liefert.

Wenn sich Benutzer anmelden (wenn sie aufhören, anonyme Benutzer zu sein), wird das MigrateAnonymous-Ereignis ausgelöst. Sie können dieses Ereignis behandeln, um bei Bedarf Informationen von der anonymen Identität des Benutzers auf die neue, authentifizierte Identität zu migrieren. Im folgenden Codebeispiel wird veranschaulicht, wie Informationen migriert werden, wenn ein Benutzer authentifiziert wird.

Public Sub Profile_OnMigrateAnonymous(sender As Object, args As ProfileMigrateEventArgs)
  Dim anonymousProfile As ProfileCommon = Profile.GetProfile(args.AnonymousID)

  Profile.ZipCode = anonymousProfile.ZipCode
  Profile.CityAndState = anonymousProfile.CityAndState
  Profile.StockSymbols = anonymousProfile.StockSymbols

  ''''''''
  ' Delete the anonymous profile. If the anonymous ID is not 
  ' needed in the rest of the site, remove the anonymous cookie.

  ProfileManager.DeleteProfile(args.AnonymousID)
  AnonymousIdentificationModule.ClearAnonymousIdentifier()

  ' Delete the user row that was created for the anonymous user.
  Membership.DeleteUser(args.AnonymousID, True)
End Sub
public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
  ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);

  Profile.ZipCode = anonymousProfile.ZipCode;
  Profile.CityAndState = anonymousProfile.CityAndState;
  Profile.StockSymbols = anonymousProfile.StockSymbols;

  ////////
  // Delete the anonymous profile. If the anonymous ID is not 
  // needed in the rest of the site, remove the anonymous cookie.

  ProfileManager.DeleteProfile(args.AnonymousID);
  AnonymousIdentificationModule.ClearAnonymousIdentifier(); 

  // Delete the user row that was created for the anonymous user.
  Membership.DeleteUser(args.AnonymousID, true);

}

Siehe auch

Konzepte

Übersicht über ASP.NET-Profileigenschaften

Übersicht über ASP.NET-Profileigenschaften

Definieren von ASP.NET-Profileigenschaften

ASP.NET-Profilanbieter