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 jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.