Sessões de usuário no navegador

As sessões são um mecanismo do site que permitem que os servidores lembrem de informações sobre um usuário ao longo de várias telas, mesmo em um ambiente onde cada requisição HTTP é, por si só, independente e stateless.

Conceito de sessão

  • Persistência de estado:
    Sessões permitem que uma experiência personalizada seja mantida enquanto o usuário navega por diferentes páginas de um site, armazenando informações como autenticação, preferências e dados de interação.

  • ID Único:
    Quando o usuário acessa um site, o servidor gera um ID para essa sessão. Esse identificador é usado para associar futuros requests a um conjunto específico de dados armazenados no servidor.

Obs: O que é "estado" no contexto de aplicações web? Com "estado" nos referimos às informações que indicam a situação atual de um usuário ou de uma aplicação em um dado momento. Basicamente, é o conjunto de dados que o sistema lembra sobre os usuários enquanto eles navegam no site.

Como funcionam no navegador

  1. Criação e armazenamento de sessão:
    Ao acessar um site, o servidor cria uma sessão para o usuário e envia um identificador único de sessão para o navegador. Esse identificador é geralmente armazenado em um cookie.

  2. Envio Automático do Cookie:
    Toda vez que você interage com o site, clicando em um link ou preenchendo um formulário, o navegador envia o cookie junto com a requisição. O servidor usa o identificador do cookie para acessar ou atualizar a sessão e assim ajustar as informações conforme suas ações.

  3. Atualização do estado:
    Toda vez que o usuário interage com o site (clicando em links, submetendo formulários etc.), o navegador envia o cookie contendo o identificador. O servidor utiliza esse identificador para acessar ou atualizar os dados da sessão, garantindo uma experiência personalizada e a persistência dos estados.

  4. Segurança dos Cookies:
    Os cookies de sessão podem contar com atributos como HttpOnly (impede que scripts no navegador acessem o cookie, evitando ataques como o XSS) e Secure(permite que o cookie seja enviado em conexões HTTPS), que ajudam a proteger o seu conteúdo contra ataques e asseguram que os dados só sejam transmitidos através de conexões seguras.

Conclusão

Imagine que você entra em uma biblioteca onde o garçom te entrega um crachá com um número único (seu ID de sessão). Cada vez que você pede um livro (faz uma requisição), você mostra o crachá. Assim, o bibliotecário sabe quais livros você já pegou ou se você tem alguma restrição. No nosso caso, o navegador usa um cookie com o ID da sua sessão para que o servidor lembre de você sempre que visitá-lo.

Este mecanismo de sessões torna possível que, mesmo que o HTTP não lembre de nada entre as requisições (seja stateless), o site possa manter uma experiência personalizada e contínua para cada usuário.