Cookies em ASP.Net

by Felipe Oriani 15. agosto 2009 07:51

Olá Pessoal, hoje vou demonstrar de forma rápida e fácil de trabalhar com um dos recursos que as tecnologias em ambiente web permitem, é a utilização de Cookies.

Um cookie pode considerar-se que é um arquivo de texto que é enviado à máquina do cliente contendo informações para que a aplicação ou web site possa persistir diretamente no cliente, ou seja, é uma informação para aquele cliente em questão. Além destas informações, um cookie mantém informações a respeito de sua validade, conceitos de chaves/valor para cookies e a qual domínio ele foi gerado/pertence. Alguns exemplos de sua utilização são como armazenar informações a respeito do login do usuário em uma área restritira, manter um controle dos produtos mais acessados em uma loja virtual, entre outras formas.

Em ASP.Net para se utilizar um cookie, devemos utilizar um objeto da classe HttpCookie e enviar este objeto ao cliente através do objeto intrínseco Response. Para fazer a recuperação deste cookie, podemos utilizar o objeto intrínseco Request. Vamos a um simples exemplo:

// criando um objeto cookie para enviar ao cliente

// seu construtor permite que passemos um nome e um valor, ambos do tipo string

HttpCookie cookie = new HttpCookie("teste","abc");

//definindo uma validade de 3 horas para este cookie

cookie.Expires = DateTime.Now.AddHours(3);

       

//enviando ao cliente

Response.AppendCookie(cookie);

 

E para fazermos a recuperação deste cookie:

//recuperando um cookie através da chave

HttpCookie cookie = Request.Cookies["teste"];


//caso ele não tenha expirado e não seja nulo

if (cookie != null)

{
    //recuperando o valor do cookie

    string valor = cookie.Value;

    Response.Write(valor);

}

 

Podemos também utilizar coleções do tipo chave/valor através da propriedade Values, que representa uma coleção da classe System.Collections.Specialized.NameValueCollection para enviar informações ao cliente, por exemplo:

// criando um objeto cookie para enviar ao cliente

// eu construtor permite que passemos apenas um nome

HttpCookie cookie = new HttpCookie("teste");

//definindo valores

cookie.Values["valor1"] = "Felipe";

cookie.Values["valor2"] = "Oriani";

cookie.Values["valor3"] = "Piracicaba";

cookie.Values["valor4"] = "São Paulo";

 

 

//definindo uma validade de 3 horas para este cookie

cookie.Expires = DateTime.Now.AddHours(3);

 

//enviando ao cliente

Response.AppendCookie(cookie);

 


//recuperando um cookie pelo nome

HttpCookie cook = Request.Cookies["teste"];


//caso ele não tenha expirado e não seja nulo

if (cook != null)

{

    //obtendo os valores de cada chave

    string valor1 = cook.Values["valor1"];

    string valor2 = cook.Values["valor2"];

    string valor3 = cook.Values["valor3"];

    string valor4 = cook.Values["valor4"];

    Response.Write(valor1 + ", " + valor2 + ", " + valor3 + ", " + valor4);

} 

 

Devemos ter alguns cuidados na utilização de cookies, pois como estes são dados que serão enviados e salvos no cliente, estes arquivos tornam-se vulneráveis a softwares maliciosos e podem ler as informações e fazer algo que não desejamos como modificar a informação e enviar a terceiros. Dados que não devemos gravar em cookies são senhas, número de cartão de créditos, informações sigilosas, entre outros tipos de dados. Além disso, outro cuidado que se torna necessário em algumas ocasiões é verificar se o browser do cliente está com o suporte a cookies, pois muitas vezes este suporte pode estar desativado e sendo assim perdemos este recurso de persistência de informação.  Para verificar se o browser contém suporte, podemos utilizar a propriedade Browser do objeto intrínseco Request que persiste um objeto da classe HttpBrowserCapabilities (no qual contém informações do browser do cliente). Veja como fazer esta verificação:

if (Request.Browser.Cookies)

{

    //suporte cookies

}

else

{

    //não suporte cookies

}

O mesmo pode ser feito para outras propriedades deste objeto, como por exemplo:

if (Request.Browser.JavaScript)

{

    //suporte Javascript

}

 

if (Request.Browser.IsMobileDevice)

{

    //está sendo acessado de um dispositivo móvel

}

 

if (Request.Browser.JavaApplets)

{

    //suporte a Java

}

 

Bem pessoal, é isso. Com cautela você pode utilizar Cookies em aplicações web e tirar bom proveito deste recurso de persistência de informação.

Espero que tenham gostado
Um abraço e até a próxima

Referências:
http://msdn.microsoft.com/pt-br/library/system.web.httpcookie.aspx
http://msdn.microsoft.com/en-us/library/system.web.httpcookie_members.aspx

 

Tags:

ASP.Net

Comentários (2) -

Kelly Araújo
Kelly Araújo Brazil
22/10/2009 12:01:17 #

Adorei os comentários trabalho com testes em aplicação Web. E utilizar o arquivo cookie para transitar as informações.

Obrigada

Felipe Oriani
Felipe Oriani Brazil
22/10/2009 19:36:40 #

Olá Kelly, Cookies é uma das formas de persistir informações em aplicações web e o ASP.Net oferece formas para se fazer isso! Smile

Comentar

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading

Sobre

Sou Felipe Oriani e trabalho com desenvolvimento web desde 2004, com tecnologias Microsoft como Asp e Asp.Net utilizando as linguagens C# e Vb.Net. Bacharel em Ciência da Computação pela Escola de Engenharia de Piracicaba,  MCTS (.Net Framework 3.5, ASP.NET Applications). Conheça um pouco mais sobre meu CurrículumVeja mais 

Social

profile for Felipe at Stack Overflow, Q&A for professional and enthusiast programmers

Selos

MCTS .Net Framework 3.5, ASP.NET Developer

MCP - Microsoft Certified Professional