Sessões e Cookies em C#: O Guia Completo

13/09/2024

O Que São Sessões e Cookies?

  • Sessões: Em C#, as sessões são usadas para armazenar dados no servidor e associá-los a um usuário por meio de um identificador de sessão. Esse identificador é enviado ao navegador do usuário e vinculado ao estado armazenado no servidor.
  • Cookies: Cookies são pequenos arquivos de texto armazenados no navegador do usuário. Eles podem ser usados para manter informações entre requisições e persistir dados durante futuras visitas ao site.

A principal diferença é que as sessões armazenam os dados no servidor, enquanto os cookies armazenam as informações no lado do cliente (navegador).

Trabalhando com Sessões em C# (ASP.NET Core)

As sessões em C# são configuradas e usadas no ASP.NET Core através de middleware. Para começar a usar sessões, primeiro você deve habilitar o suporte a sessões no arquivo Startup.cs:

Configurar Sessões

public void ConfigureServices(IServiceCollection services)
{
    // Adicionando suporte a sessões
    services.AddSession(options =>
    {
        options.IdleTimeout = TimeSpan.FromMinutes(30); // Tempo de expiração
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // Habilitando sessões
    app.UseSession();
}

Depois de configurar o suporte a sessões, você pode armazenar e recuperar dados da sessão usando o objeto HttpContext.Session:

Armazenando Dados na Sessão

public IActionResult ArmazenarNaSessao()
{
    HttpContext.Session.SetString("Usuario", "João Silva");
    HttpContext.Session.SetInt32("Idade", 30);
    return View();
}

Neste exemplo, usamos os métodos SetString e SetInt32 para armazenar uma string e um número inteiro na sessão.

Recuperando Dados da Sessão

public IActionResult RecuperarDaSessao()
{
    var usuario = HttpContext.Session.GetString("Usuario");
    var idade = HttpContext.Session.GetInt32("Idade");

    if (usuario != null)
    {
        return Content($"Usuário: {usuario}, Idade: {idade}");
    }
    else
    {
        return Content("Nenhum dado encontrado na sessão.");
    }
}

Aqui, estamos recuperando os valores armazenados anteriormente e exibindo-os. Se os dados não forem encontrados, uma mensagem será exibida.

Encerrar a Sessão

Quando a sessão não for mais necessária, você pode encerrá-la usando o método Clear para limpar os dados da sessão:

public IActionResult EncerrarSessao()
{
    HttpContext.Session.Clear();
    return RedirectToAction("Index");
}

Trabalhando com Cookies em C# (ASP.NET Core)

Os cookies são úteis quando você deseja armazenar informações que persistam entre visitas ao site ou para longos períodos de tempo. Em ASP.NET Core, você pode definir, ler e excluir cookies usando o objeto HttpContext.Response e HttpContext.Request.

Definir um Cookie

public IActionResult DefinirCookie()
{
    CookieOptions options = new CookieOptions
    {
        Expires = DateTime.Now.AddDays(30) // Definindo expiração para 30 dias
    };
    Response.Cookies.Append("Usuario", "João Silva", options);
    return Content("Cookie definido.");
}

No exemplo acima, criamos um cookie chamado "Usuario" que armazena o valor "João Silva" e expira em 30 dias.

Recuperar o Valor de um Cookie

public IActionResult RecuperarCookie()
{
    var usuario = Request.Cookies["Usuario"];

    if (usuario != null)
    {
        return Content($"Bem-vindo de volta, {usuario}");
    }
    else
    {
        return Content("Cookie não encontrado.");
    }
}

Aqui, estamos verificando se o cookie "Usuario" existe e, caso contrário, uma mensagem será exibida.

Remover um Cookie

Para remover um cookie, basta definir sua expiração para uma data no passado:

public IActionResult RemoverCookie()
{
    Response.Cookies.Delete("Usuario");
    return Content("Cookie removido.");
}

Quando Usar Sessões e Cookies?

A escolha entre sessões e cookies depende de suas necessidades:

  • Use sessões quando precisar armazenar dados temporários ou sensíveis no servidor, como informações de login, carrinho de compras ou preferências do usuário.
  • Use cookies quando precisar armazenar informações que possam persistir por longos períodos e que não sejam críticas para a segurança, como preferências do site ou identificadores de sessão para "lembrar-me".

Uma boa prática é usar sessões para dados sensíveis e cookies para informações menos críticas ou que precisam persistir entre visitas ao site.

Conclusão

Sessões e cookies são ferramentas essenciais no desenvolvimento web com C#. Saber como usá-los corretamente permite que você gerencie o estado do usuário de forma segura e eficiente. Use sessões quando precisar armazenar dados temporários ou confidenciais no servidor, e cookies para informações de longo prazo ou que precisem ser acessadas em múltiplas visitas. Com uma implementação adequada, suas aplicações se tornarão mais seguras e eficientes.