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.
<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:
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
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
| Provider | Descrizione |
| Access | Per Membership, Roles e Profile; http://msdn.microsoft.com/vstudio/eula.aspx?id=96713a8e-b8d4-4d6e-bb8f-027e6c8e15d8 |
| MySQL | Per Membership e Roles; http://www.codeproject.com/aspnet/MySQLMembershipProvider.asp |
| SQLLite 3.0 | Per Membership, Roles e Profile; http://www.eggheadcafe.com/articles/20051119.asp |
| Oracle | Dentro 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
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Utilità
Stampa
Download



