Identificazione utente per le proprietà dei profili ASP.NET
Aggiornamento: novembre 2007
La funzionalità del profilo utente ASP.NET è progettata per fornire informazioni univoche per l'utente corrente. I profili sono in grado di gestire sia gli utenti autenticati sia gli utenti anonimi, ovvero non autenticati.
Utenti autenticati
Per impostazione predefinita, un profilo utente è associato all'identità utente archiviata nella proprietà User del contesto HTTP corrente, accessibile tramite la proprietà HttpContext.Current. L'identità dell'utente è determinata da quanto riportato di seguito.
Il sistema di autenticazione basata su form ASP.NET, che imposta l'identità dell'utente dopo l'esito positivo dell'autenticazione.
L'autenticazione Windows o Passport, che imposta l'identità dell'utente dopo l'esito positivo dell'autenticazione.
L'autenticazione personalizzata, in cui è possibile ottenere le credenziali dell'utente e impostarne l'identità manualmente.
L'autenticazione basata su form ASP.NET implica la creazione di un form di accesso e la richiesta delle credenziali all'utente. È possibile utilizzare i controlli di accesso ASP.NET per creare il form di accesso ed eseguire l'autenticazione basata su form senza dover scrivere codice. Per informazioni sull'utilizzo delle funzionalità ASP.NET per l'autenticazione degli utenti, vedere Cenni preliminari sui controlli di accesso di ASP.NET e Gestione di utenti tramite l'appartenenza. Per informazioni sull'autenticazione basata su form, vedere Procedura: implementare l'autenticazione basata su form semplice.
Utenti anonimi
I profili possono anche gestire utenti anonimi. Il supporto per i profili anonimi non è attivato per impostazione predefinita, pertanto è necessario attivarlo in modo esplicito. Inoltre, durante la definizione delle proprietà dei profili nel file Web.config, è necessario renderli esplicitamente disponibili singolarmente per utenti anonimi. Le proprietà dei profili non supportano l'accesso anonimo per impostazione predefinita perché i profili possono essere progettati per l'utilizzo con utenti autenticati e molte proprietà possono essere pertinenti a informazioni personali, non disponibili per utenti anonimi.
Se viene attivata l'autenticazione anonima, ASP.NET crea un'identificazione univoca per gli utenti durante la loro prima visita al sito. L'identificazione univoca dell'utente viene archiviata in un cookie nel computer dell'utente, in modo tale da poter identificare l'utente a ogni richiesta della pagina. La data di scadenza predefinita per il cookie è di circa 70 giorni e viene rinnovata periodicamente quando l'utente visita il sito. Se il computer dell'utente non accetta cookie, l'identificazione dell'utente può essere mantenuta come parte dell'URL della richiesta della pagina; tuttavia, tale l'identificazione andrà persa quando l'utente chiuderà il browser.
Per informazioni sull'attivazione dell'identificazione anonima, vedere Elemento anonymousIdentification (schema delle impostazioni ASP.NET).
Migrazione di informazioni di profili anonimi
In alcuni casi, è possibile che l'applicazione mantenga inizialmente le informazioni di personalizzazione per un utente anonimo che, in un secondo momento, decide di eseguire la procedura di accesso all'applicazione. In questo caso, l'identità dell'utente cambia da identità utente anonima, come assegnata, a identità fornita dal processo di autenticazione.
Quando gli utenti effettuano l'accesso, ossia quando cessano di essere utenti anonimi, viene generato l'evento MigrateAnonymous. Se necessario, è possibile gestire questo evento per eseguire la migrazione di informazioni da un'identità anonima dell'utente a una nuova identità autenticata. Nell'esempio riportato di seguito viene illustrato come eseguire la migrazione di informazioni quando un utente viene autenticato.
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);
}
Vedere anche
Concetti
Cenni preliminari sulle proprietà dei profili ASP.NET
Cenni preliminari sulle proprietà dei profili ASP.NET