HTTP Session no Laravel

Laravel
Tempo de leitura: 4 minutos

HTTP Session no Laravel: O protocolo HTTP é stateless (sem estado), o que significa que cada requisição de um usuário é tratada isoladamente, sem memória das interações anteriores. Para simular um “estado” e manter dados do usuário (como login, carrinho de compras, ou preferências) através de múltiplas requisições, o Laravel utiliza o sistema de Sessões HTTP.

No Laravel 12, o sistema de Sessões oferece uma API fácil e segura para armazenar dados no lado do servidor, vinculando-os a um usuário específico através de um cookie de sessão.

1. ⚙️ Configuração e Drivers de Sessão

A configuração principal da sessão é definida no arquivo config/session.php.

A. Driver de Sessão

O driver define onde os dados da sessão serão fisicamente armazenados no servidor:

DriverVantagemUso Típico
filePadrão, simples de usar.Projetos pequenos a médios, desenvolvimento.
databasePersistência, mais fácil de gerenciar backups.Aplicações que precisam de rastreamento de sessão.
redis ou memcachedAlta performance, escalabilidade.Aplicações grandes, alto tráfego.
arrayNão persiste.Testes unitários.

PHP

// config/session.php
'driver' => env('SESSION_DRIVER', 'file'), // Usa 'file' por padrão
'lifetime' => 120, // Tempo de vida em minutos (2 horas)
'expire_on_close' => false, // A sessão expira quando o navegador é fechado?

B. Cookie de Sessão

O Laravel envia um cookie para o navegador do usuário contendo apenas o ID da Sessão. O browser envia esse ID em todas as requisições subsequentes, permitindo que o Laravel recupere os dados da sessão armazenados no servidor.

2. 📝 Armazenando e Acessando Dados

Você pode interagir com a sessão usando a função helper session() ou a Facade Session.

A. Armazenar Dados (put)

Armazena um valor com uma chave:

PHP

// Armazena 'João' na chave 'nome'
session()->put('nome', 'João'); 
session()->put('email', '[email protected]');

B. Recuperar Dados (get)

Recupera o valor de uma chave. Você pode fornecer um valor padrão se a chave não existir:

PHP

$nome = session()->get('nome'); // 'João'
$idade = session()->get('idade', 'Não Informado'); // Se 'idade' não existir, retorna 'Não Informado'

C. Verificar Existência (has)

Verifica se uma chave existe e não é null:

PHP

if (session()->has('email')) {
    // A chave 'email' está presente na sessão.
}

D. Armazenar e Recuperar Imediatamente (pull)

Recupera o valor da chave e a remove da sessão em uma única operação:

PHP

$nomeRemovido = session()->pull('nome');
// Agora, session()->has('nome') retorna false.

3. 🗑️ Removendo e Encerrando Sessões

A. Remover Item Específico (forget)

Remove uma ou mais chaves específicas da sessão:

PHP

session()->forget('nome');
// Para remover múltiplas chaves:
session()->forget(['nome', 'email']);

B. Finalizar a Sessão (flush)

Limpa todos os dados da sessão do usuário:

PHP

session()->flush(); 
// A sessão do usuário é completamente esvaziada.

C. Regenerar ID (regenerate)

Gera um novo ID de sessão para a requisição atual. Isso é útil após o login para prevenir Session Fixation.

PHP

session()->regenerate();

4. ⚡ Flash Data (Dados Temporários)

Flash Data são dados armazenados na sessão apenas para a próxima requisição HTTP e automaticamente removidos depois. Isso é ideal para mensagens de notificação após um redirecionamento.

A. Armazenar Flash Data

PHP

// No Controller, após um POST bem-sucedido
return redirect('/dashboard')->with('success', 'Post criado com sucesso!');
// Equivalente a: session()->flash('success', '...');

B. Acessar Flash Data

Na View de destino (dashboard), você acessa o dado normalmente:

PHP

@if (session()->has('success'))
    <div class="alert alert-success">
        {{ session('success') }}
    </div>
@endif

✅ Conclusão HTTP Session no Laravel

HTTP Session no Laravel: O sistema de sessões do Laravel transforma o HTTP stateless em uma experiência stateful, permitindo que você mantenha dados do usuário entre múltiplas requisições. A chave é usar a API session() para armazenar (put), recuperar (get) e limpar (forget/flush) dados. Além disso, o Flash Data (with()) é essencial para mensagens de feedback temporárias, garantindo uma aplicação interativa e segura.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de experiência em tecnologia, atuo como Engenheiro de Computação, desenvolvedor de sistemas, escritor e produtor de conteúdo. Minha trajetória passa pelo ensino técnico, desenvolvimento web, arquitetura de sistemas e criação de soluções voltadas para a indústria de jogos digitais. Acredito que conhecimento deve ser acessível e aplicável. Essa visão resultou em uma biblioteca com mais de 550 artigos gratuitos, abrangendo temas como desenvolvimento web, infraestrutura, inteligência artificial, Game Design, mercado de jogos e carreiras na indústria de games. Sou autor do livro "GDD – O Guia Definitivo", uma obra dedicada ao planejamento e documentação de jogos digitais, e criador do GameMeTRix, uma plataforma que auxilia desenvolvedores na análise e validação de ideias para jogos. Meu trabalho busca conectar planejamento, tecnologia e mercado para ajudar criadores a transformar boas ideias em projetos viáveis. Atualmente concentro meus estudos e projetos no desenvolvimento de jogos web, na criação de metodologias para validação de produtos digitais e na produção de conteúdo técnico voltado ao ecossistema de jogos. Meu compromisso é unir teoria, prática e experiência de mercado para contribuir com o crescimento de novos desenvolvedores e profissionais da área.