Classe para Ler e Gravar Cookies - Asp.Net MVC 4 com C# (CSharp)
Postado em : 14/05/2016
Cookies
Pequenos arquivos utilizados para gravar e recuperar informações na máquina do cliente.
Quantidade máxima de Cookies que se pode gravar na máquina do cliente 20.
Tamanho máximo de cada Cookie é de 4k.
Ao começar o projeto desta página me deparei com a necessidade de manipular Cookies
e ao pesquisar para começar a desenvolver uma Classe que atendesse as minhas necessidades encontrei este código na internet, fiz alguns testes e tudo funcionou maravilhosamente, como em time que esta ganhando não se mexe, acabei por adota-la e estou usando a quase um ano sem alterar nada.
Obs: Está Classe não é de minha autoria, foi encontrada na internet e tomei a liberdade de testar e publicar aqui para nossos seguidores.
Como utilizar a Classe Cookies
.
Não é preciso instanciar esta Classe, ela é uma Classe estática (
static
).
Para gravar um Cookie chamarCookie.Set(Key, value)
onde key é o nome do Cookie e value é uma string com o valor a ser guardado.
Para ler um Cookie chamarCookie.Get(key)
onde key é o nome do Cookie, retorna uma string com o valor armazenado.
Para verificar se um Cookie esta gravado no cliente chamarCookie.Exists(key)
, retorna um boolean comtrue
se encontrado efalse
senão foi encontrado.
Para apagar um Cookie especifico chamarCookie.Delete(key)
, apaga o Cookie com a chave informada.
Para apagar todos os Cookies registrados sob o domínio de seu site chamarCookie.DeleteAll()
.O prazo de validade do Cookie esta definido por Default como 360 dias em
GetCookieDuration()
e é carregado em_cookieDuration
logo no inicio da Classe, não senti a necessidade de mudar isto. Se for preciso alterar você pode fazer isto diretamente emGetCookieDuration()
informando um novo valor Default ou criar um método adicional para gravar o Cookie onde pode se informar o valor desejado.
Vamos lá, crie um Classe
em seu projeto na pasta Models
com o nome de Cookies.cs
copie o e cole o código abaixo.
/* * Classe para Gravar e Ler Cookies * * Autor : Retirada da Internet. * * Visite nossa página http://www.codigoexpresso.com.br * * Chamadas da Classe * * Gravar um Cookie => Set(key, Valor) * Recuperar um Cookie => Get(key) * Retorna uma string com o Cookie gravado com a chave indicada. * Verificar se um Cookie existe => Exists(key) * Retorna True se existe e false não existe. * Apagar Cookie => Delete(key) * Apaga o Cookie com a chave indicada. * => DeleteAll() * Apaga todos. */ using System; using System.Configuration; using System.Web; public static class Cookie { private const string CookieSetting = "Cookie.Duration"; private const string CookieIsHttp = "Cookie.IsHttp"; private static HttpContext _context { get { return HttpContext.Current; } } private static int _cookieDuration { get; set; } private static bool _cookieIsHttp { get; set; } static Cookie() { _cookieDuration = GetCookieDuration(); _cookieIsHttp = GetCookieType(); } public static void Set(string key, string value) { var c = new HttpCookie(key) { Value = value, Expires = DateTime.Now.AddDays(_cookieDuration), HttpOnly = _cookieIsHttp }; _context.Response.Cookies.Add(c); } public static string Get(string key) { var value = string.Empty; var c = _context.Request.Cookies[key]; return c != null ? _context.Server.HtmlEncode(c.Value).Trim() : value; } public static bool Exists(string key) { return _context.Request.Cookies[key] != null; } public static void Delete(string key) { if (Exists(key)) { var c = new HttpCookie(key) { Expires = DateTime.Now.AddDays(-1) }; _context.Response.Cookies.Add(c); } } public static void DeleteAll() { for (int i = 0; i <= _context.Request.Cookies.Count - 1; i++) { if (_context.Request.Cookies[i] != null) Delete(_context.Request.Cookies[i].Name); } } private static int GetCookieDuration() { //default int duration = 360; var setting = ConfigurationManager.AppSettings[CookieSetting]; if (!string.IsNullOrEmpty(setting)) int.TryParse(setting, out duration); return duration; } private static bool GetCookieType() { //default var isHttp = true; var setting = ConfigurationManager.AppSettings[CookieIsHttp]; if (!string.IsNullOrEmpty(setting)) bool.TryParse(setting, out isHttp); return isHttp; } }
Links Relacionados
- Arquitetura CQRS
- Arrays em C#(CSharp)
- C#(CSharp) Converter inteiro para Hexadecimal e Hexadecimal para Inteiro
- C#(CSharp) Exemplo de Conversão de um List<> de uma classe qualquer para um DataTable.
- C#(CSharp) Função para verificar se um determinado número é Primo
- Calcular Idade C# (CSharp), diferença anos entre duas datas
- Classe com Métodos de extensão C# (CSharp)
- Classe para tratar valores nulos vindos de nossa Query SQL, C#(CSharp).
- Classes anônimas em C#(CSharp)
- Comando nameof() C#(CSharp)
- Compare duas strings ignorando maiúsculas e minúsculas C#(CSharp).
- Consulta SQLServer com paginação
- Criar Classes Dinâmicas usando DynamicObject e ExpandoObject em C# (CSharp)
- Definir o dia em um DateTime.
- DELETE CASCADE no SqlServer
- Desvendando o Poder da Função STRING_AGG no SQL Server para concatenação de dados
- Diferença entre parâmetros REF e OUT em C#(CSharp)
- Emitir sons pelo auto-falante do computador em C# (CSharp)
- Estrangulando um monólito C#(CSharp)
- Exemplo de acesso a dados com SQL Server em C#.
- Exemplo de consulta em SqlServer para encontrar uma chave Estrangeira
- Explorando Tipos de Dados Personalizados no SqlServer: Utilidade e Impacto na Performance
- Extensões para DataReader, tratando valores de suas consultas SQL (DataReaderExtensions) C#(CSharp)
- Formatar CEP em C# (CSharp)
- Função para devolver data do próximo dia da semana informado C#(CSharp).
- Gerando números randômicos para sorteio de jogos de azar C#(CSharp)
- Grafana Loki e .NET Framework com C#
- Incrementando e decrementando variáveis em C#(CSharp)
- Injeção de dependência
- Ler string de conexão (connectionStrings) do arquivo Web.config Asp.Net MVC co C#(CSharp)
- Métodos de extensão C#
- Ordenando um array com o comando OrderBy C#(CSharp)
- Parar um loop foreach usando o comando break C#(CSharp).
- Recuperar a URL da página anterior em Asp.Net C# (CSharp)
- Recuperar a URL da página atual em Asp.Net C# (CSharp)
- Recuperar para código C# (CSharp) o valor de um componente de nossa página
- Retorna o IP da conexão do Cliente em Asp.Net MVC com C# (CSharp)
- Retorna os dados do Navegador do Cliente em Asp.Net MVC com C# (CSharp)
- Salvando CSV com cabeçalho no SQL Server Management Studio
- Separar String de caracteres C#(CSharp)
- Serilog e .NET Framework com C#
- Tipos de dados em C# (CSharp)
- Tipos de dados primitivos em C#(CSharp)
- Validando Valores nulos vindos de nosso Banco de Dados C#(CSharp)
- Validar Modelos com Data Annotation e Windows Form Application C#(CSharp)
- Verificar se uma string é um digito em C# (CSharp)
Comentários
Felipe, quando peço para colocar na pasta Models é porque esta pasta normalmente será mapeada em tudo que vai fazer, o que deve fazer é mapear sua pasta onde esta usando, onde estão suas declarações de using no topo de seu codigo faça o mapeamento da pasta onde colocou seu código,,
Exemplo :
using seusistema.Domain;
Amigo, boa tarde. Criei a classe no Model da minha aplicação, na pasta Domain, e onde consta ConfigurationManager na classe está com erro "The name 'ConfigurationManager' does not exist in the current context". Como posso resolve-lo? Obrigado.