Migrando Profiles


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();
}

 

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s