17
Personalização Objecto Profile

Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

Embed Size (px)

Citation preview

Page 1: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

PersonalizaçãoObjecto Profile

Page 2: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

2

O objecto Profile O objecto Profile permite armazenar informação única de um utilizador.

Quando o utilizador visita novamente o site é possível usar a informação armazenada para apresentar ao utilizador uma versão personalizada da aplicação Web.

Para personalizar uma aplicação é necessário: Guardar informação usando um identificador de utilizador único, Reconhecer o utilizador quando visita novamente o site, e Aceder a essa informação quando for necessário.

Em ASP.NET 1.1 usava-se o objecto Session. Apresenta a desvantagem da volatilidade – por omissão persiste na

memória, e só durante a sessão. Também se podia armazenar informação em bases de dados, mas era

necessário escrever código para gravar e retribuir essa informação

ASP.NET 2.0 introduz um novo objecto Profile que permite persistir os dados do utilizador de um modo muito mais eficiente.

Page 3: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

3

AS.NET 2.0 Profiles O serviço de Profile de ASP.NET 2.0 simplifica a tarefa de guardar

dados por utilizador.

No objecto Profile pode-se armazenar objectos de qualquer tipo.

O serviço de Profile trabalha com utilizadores autenticados e não autenticados.

Pode-se especificar um provider de Profile, sendo por omissão, usada a instância SqlProfileProvider que armazena os dados do profile no servidor Web local.

Para poder usar o objecto profile é necessário primeiro activar o serviço de Profile no ficheiro Web.config.

No ficheiro Web.config configura-se o objecto Profile definindo uma lista de propriedades cujos valores se pretendem manter.

O serviço de Profile disponibiliza essa informação usando uma API fortemente tipada, acessível em qualquer parte da aplicação.

Page 4: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

4

Uso do objecto Profile Aplicação Web simples com apenas uma página:

protected void Page_Load(object sender, EventArgs e) { if (Profile.PrimeiroNome != "") { Panel1.Visible = false; Response.Write("Bem-vindo " + Profile.PrimeiroNome + " " + Profile.UltimoNome); } else Panel1.Visible = true; }

protected void Button1_Click(object sender, EventArgs e) { Profile.PrimeiroNome = TextBox1.Text; Profile.UltimoNome = TextBox2.Text; }

Page 5: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

5

Uso do objecto Profile Server Error in '/Profiles' Application.

Compilation Error

Compiler Error Message: CS0117: 'System.Web.Profile.DefaultProfile' does not contain a definition for 'PrimeiroNome‘

Source Error: Line 15: if (Profile.PrimeiroNome != "")

É necessário activar o serviço de Profile:No Solution Explorer, Add New Item… , Web Configuration File.No ficheiro Web.config definem-se 2 propriedades – PrimeiroNome e UltimoNome.

<?xml version="1.0"?><configuration> <system.web>

<profile><properties>

<add name="PrimeiroNome"/><add name="UltimoNome"/>

</properties></profile>

</system.web></configuration>

Page 6: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

6

Uso do objecto Profile

É necessário refrescar a listagem do projecto no Solution Explorer para ver a pasta App_Data criada e o ficheiro de base de dados ASPNET.MDF

Page 7: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

7

Autenticação Windows Duplo clique na base de dados abre a janela Solution Explorer com as tabelas da base de dados. Seleccionando o menu “Show Table Data” podemos ver o conteúdo de cada tabela. Conteúdo das tabelas: aspnet_Profile e aspnet_Users

Page 8: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

8

Autenticação ASP.NET Forms Por omissão ASP.Net usa Autenticação Windows. Na

aplicação Web criada as propriedades do objecto Profile foram associadas ao nome do utilizador Windows.

Autenticação Windows é útil para aplicações Intranet, mas para autenticar utilizadores externos é melhor usar autenticação ASP.NET Forms.

Vamos mudar o modo de autenticação de Windows para Forms no ficheiro Web.config:

<?xml version="1.0"?><configuration>

<system.web><profile>

<properties><add name="PrimeiroNome"/><add name="UltimoNome"/>

</properties></profile><authentication mode="Forms" />

</system.web></configuration>

Page 9: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

9

Autenticação ASP.NET Forms Server Error in '/Profiles' Application.

This property cannot be set for anonymous users.Vamos:

Adicionar um nova página Login.aspx com o controlo Login. Adicionar um novo utilizador através do menu Website > ASP.NET

Configuration. Alterar o elemento authentication e adicionar o elemento

authorization do web.config.

<authentication mode="Forms" > <forms name=".ASPXAUTH"

loginUrl="Login.aspx“protection="Validation“timeout="999999" />

</authentication><authorization>

<deny users="?" /></authorization>

Page 10: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

10

Autenticação ASP.NET FormsComo é negado o acesso a todos os utilizadores não autenticados, a aplicação redirige para a página Login.aspx

Efectuando login usandoo nome do utilizador criado,surge a página Default.aspx

Page 11: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

11

Autenticação ASP.NET Forms

Conteúdo das tabelas: aspnet_Profile e aspnet_Users

Page 12: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

12

Personalização Anónima Suporte para Profiles anónimos não está activo por omissão. É

necessário: activar o serviço para utilizadores anónimos, na definição das propriedades do Profile no ficheiro

Web.config explicitar as propriedades disponíveis para utilizadores anónimos.

Ficheiro Web.config:

<system.web> <profile>

<properties> <add name="PrimeiroNome" allowAnonymous="true"/> <add name="UltimoNome" allowAnonymous="true"/></properties>

</profile> <authentication mode="Forms" >

<forms name=".ASPXAUTH" loginUrl="Login.aspx"protection="Validation" timeout="999999" />

</authentication> <anonymousIdentification enabled="true" /></system.web>

Page 13: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

13

Personalização AnónimaConteúdo das tabelas: aspnet_Profile e aspnet_Users

Page 14: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

14

Identificação do utilizador O serviço profile ASP.NET foi concebido para manter

informação única do utilizador corrente. O Profile de um utilizador é associado com a identidade do utilizador.

Profiles trabalham quer com utilizadores autenticados quer com utilizadores anónimos.

Utilizadores Autenticados: Autenticação ASP.NET Forms Autenticação Windows ou Passport

Utilizadores Anónimos: Suporte não activo por omissão. É necessário:

activar o serviço para utilizadores anónimos, na definição das propriedades do Profile no ficheiro Web.config

explicitar as propriedades disponíveis para utilizadores anónimos.As propriedades do profile não suportam acesso anónimo por omissão porque certas propriedades podem conter informação pessoal não disponível para utilizadores anónimos.

Page 15: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

15

Utilizadores anónimos Se a identificação anónima está activa, ASP.NET cria uma

identificação única para utilizadores que visitam o site pela primeira vez.

Essa identificação é armazenada num Cookie no computador do utilizador para o utilizador ser identificado em cada pedido de página.

O tempo de vida do Cookie, por omissão, é colocado em aproximadamente 70 dias e é periodicamente renovado quando o utilizador visita o site.

Se o computador do utilizador não aceita cookies, a identificação do utilizador é mantida como parte do URL do pedido da página, mas perde-se quando o utilizador fecha o browser.

Page 16: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

16

Migração de Personalização Anónima para Personalização Autenticada

Em certos casos a aplicação pode manter informação personalizada para um utilizador anónimo e depois se o utilizador efectuar login, mudando a sua identidade, ser necessário migrar a informação da identidade do utilizador anónimo para a nova identidade autenticada.

Exemplo de um utilizador anónimo usar o objecto Profile para adicionar itens ao carrinho de compras, e só na altura de efectuar check out e proceder ao pagamento efectuar o login.

Quando um utilizador anónimo efectua login o evento Profile_MigrateAnonymous é gerado.

Page 17: Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita

17

Migração de Personalização Anónima para Personalização Autenticada

Adicione um novo item ao Projecto:Add New Item > Global Application Class > Add

O nome do ficheiro é sempre Global.asax

Exemplo de código para migrar a informação:

<%@ Application Language="C#" %><script runat="server"> void Profile_MigrateAnonymous(object sender,

ProfileMigrateEventArgs e) { if (Profile.GetProfile(e.AnonymousID).PrimeiroNome != String.Empty){ Profile.PrimeiroNome =

Profile.GetProfile(e.AnonymousID).PrimeiroNome; } if (Profile.GetProfile(e.AnonymousID).UlimoNome != String.Empty) { Profile.UltimoNome =

Profile.GetProfile(e.AnonymousID).UltimoNome; } } </script>