Personalizzazione dell'utente con le Profile API di ASP.NET 2.0

3 pagine in totale: <<Indietro 1 2 [3]

Supporto per profili anonimi

Una delle caratteristiche più interessanti delle Profile API è la possibilità di salvare informazioni da associare ad utenti anonimi, cioè non riconosciuti dal sistema, tramite le Membership API o il tipo di autenticazione previsto. Per fare questo la funzionalità deve essere abilitata impostando l'attributo allowAnonymous di ciascuna proprietà su true, come nel caso della proprietà DataUltimoAccesso vista in precedenza.

Successivamente è necessario aggiungere una ulteriore voce al web.config, che ne abiliti il supporto.


Esempio 16.18
<system.web>
  <anonymousIdentification
    enabled="true"
    cookieSlidingExpiration="true"
    cookieProtection="All" />
</system.web>

Quando si fa riferimento al profilo, non c'è differenza nel codice da scrivere rispetto a quello di un utente che ha fatto il login.

È anche possibile intercettare l'evento MigrateAnonymous da web.config o con un HttpModule, per migrare il profilo anonimo in quello dell'utente che avesse fatto il login, dato che questo evento viene scatenato proprio in seguito a questa azione:


Esempio 16.19 - VB
Sub Profile_MigrateAnonymous(sender As Object, _
                             args As ProfileMigrateEventArgs)

  ' Recupero del profilo corrente
  Dim aProfile As ProfileCommon = _
                         Profile.GetProfile(args.AnonymousID)

  ' Migrazione del profilo
  If Not (aProfile.Name Is Nothing) Then
    Profile.Name = aProfile.Name
  End If

  ' Eliminazione del profilo anonimo
  ProfileManager.DeleteProfile(args.AnonymousID)

  ' E della guid utilizzata
  AnonymousIdentificationModule.ClearAnonymousIdentifier()

End Sub

Esempio 16.19 - C#
void Profile_MigrateAnonymous(Object sender, ProfileMigrateEventArgs args)
{
  // Recupero del profilo corrente
  ProfileCommon aProfile =
                        Profile.GetProfile(args.AnonymousID);

  // Migrazione del profilo
  if (aProfile.Name != null)
    Profile.Name = aProfile.Name;

  // Eliminazione il profilo anonimo
  ProfileManager.DeleteProfile(args.AnonymousID);

  // E della guid utilizzata
  AnonymousIdentificationModule.ClearAnonymousIdentifier();
}

Questo evento è esposto attraverso la classe ProfileModule, che è un HttpModule particolare, perché ne ha tre, il già citato MigrateAnonymous, Personalize, che si scatena in fase di creazione del profilo e può essere utilizzato per aggiungere informazioni allo stesso, e ProfileAutoSaving, che si scatena alla fine dell'esecuzione della pagina nel caso in cui sia abilitato il già citato salvataggio automatico.

Provider di terze parti e custom per Membership, Roles e Profile API

Nel mondo reale, non tutti i progetti sono fatti sfruttando SQL Server come storage. Spesso per motivi che spaziano dal budget a scelte tecniche, gli storage previsti potrebbero essere differenti.

Se ciò che si sta facendo è migrare un'applicazione che ha già la sua struttura, che si vuole mantenere, la scelta migliore è di crearne uno custom, seguendo le indicazioni di questa serie di contributi: http://tags.aspitalia.com/Provider_Model/.

La registrazione viene fatta come nel caso del provider di SQL Server, analizzato in questo capitolo, con la sola differenza che ovviamente l'attributo type dovrà far riferimento alla classe utilizzata ed implementata da ciascuno di essi.

Non tutti i provider hanno un wizard comodo da utilizzare come quello di SQL Server, ma molto spesso sono dotati di un modello di database o di un insieme di query da lanciare manualmente.

Infine, c'è la possibilità di scaricare i sorgenti dei provider inclusi in ASP.NET 2.0, per creare in maniera più semplice provider personalizzati o per altri database non previsti. Il Provider Toolkit, completamente gratuito, si può scaricare da http://msdn.microsoft.com/asp.net/downloads/providers/.

Tabella 16.7 - Lista di provider aggiuntivi

ProviderDescrizione
AccessPer Membership, Roles e Profile;
http://msdn.microsoft.com/vstudio/eula.aspx?id=96713a8e-b8d4-4d6e-bb8f-027e6c8e15d8
MySQLPer Membership e Roles;
http://www.codeproject.com/aspnet/MySQLMembershipProvider.asp
SQLLite 3.0Per Membership, Roles e Profile;
http://www.eggheadcafe.com/articles/20051119.asp
OracleDentro l'applicazione di esempio PetShop, per Membership, Roles e Profile.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp

Conclusioni

Membership, Roles e Profile API consentono di aggiungere alle applicazioni web un tocco di professionalità senza dover rinunciare alle personalizzazioni né tanto meno alle performance. In particolare, Membership API copre benissimo tutti i casi in cui sia necessario gestire gli utenti, laddove Roles tratta i ruoli e Profile consente di salvare qualsiasi informazione aggiuntiva, sia per utenti anonimi che autenticati, aggiungendo un'ulteriore possibilità per il salvataggio di dati del profilo.

Il tutto è praticamente già pronto, dato che, in quasi la totalità dei casi, non è necessario realizzare un provider personalizzato, a meno che non si abbia già una struttura o si voglia utilizzare uno storage per cui non ne sia già previsto uno.

3 pagine in totale: <<Indietro 1 2 [3]

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC