MSDN.com | MSDN Brasil
imagem de enfeite imagem de enfeite

Artigo

Por Israel Aéce - Categoria: ASP.NET 2.0 - Data da Publicação: 20/11/2006 21:51:26


Migrando Profiles

Migrando Profiles

É muito comum termos cenários onde usuários podem interagir com uma determinada aplicação ASP.NET, onde deverá manter os valores durante todo o percurso do mesmo dentro do site. O ASP.NET 2.0 introduziu um recurso bem interessante chamado de Profiles, qual já discutimos anteriormente nestes artigos. Como também já sabemos, estes profiles podem ser somente para usuários autenticados ou ainda, em alguns cenários, usuários anônimos podem também ter o seu próprio profile. Um caso típico, é quando estamos em uma loja virtual e adicionamos todos os produtos que desejamos em nossa cesta de compras e, somente quando formos finalizar a compra, é que nos identificamos, ou seja, passamos de usuário anônimo para um usuário autenticado.

Baseando-se nisso, durante a transição de usuário anônimo para usuário autenticado é necessário transferirmos todo o profile, mais especificamente, a cesta de compras para o mesmo usuário, só que agora devidamente autenticado. Para satisfazer essa necessidade, o módulo ProfileModule (disponível no namespace System.Web.Profile) dispõe um evento chamado MigrateAnonymous, qual ocorre quando um usuário anônimo efetua o login na aplicação. É passado como parâmetro para este evento um objeto do tipo ProfileMigrateEventArgs que expõe as seguintes propriedades: AnonymousID e Context. A primeira delas, AnonymousID, retorna uma string que identifica o usuário anônimo na aplicação; já a segunda, Context, retorna a instância do objeto HttpContext que representa a requisição corrente.

Para exemplificar, suponha que existam duas propriedades (com o atributo allowAnonymous definido como True) na seção de profiles da aplicação: CompanyName e SelectedLanguage. Através do método GetProfile, informamos a identificação do usuário anônimo que desejamos recuperar, que por sua vez, é exposto pela propriedade AnonymousID do argumento ProfileMigrateEventArgs. Como esse evento é disparado depois que o usuário se autentica na aplicação, quando chamamos alguma das propriedades customizadas através da propriedade Profile, esse valor já está sendo atribuído ao usuário corrente/autenticado. Finalmente, invocamos o método estático ClearAnonymousIdentifier do módulo AnonymousIdentificationModule para remover a identificação do usuário anônimo que está associado com a sessão.

void Profile_MigrateAnonymous(object sender, ProfileMigrateEventArgs e)
{
    ProfileCommon anonymousProfile = Profile.GetProfile(e.AnonymousID);

    Profile.CompanyName = anonymousProfile.CompanyName;
    Profile.SelectedLanguage = anonymousProfile.SelectedLanguage;
    AnonymousIdentificationModule.ClearAnonymousIdentifier();
}
C# VB.NET  


2005. Projetando.NET.