HTTP Sessions
Visão geral
Neste guia, você pode aprender como configurar sessões HTTP usando Laravel MongoDB. As sessões permitem que seu aplicação armazene informações sobre um usuário em várias solicitações do servidor . Seu aplicação armazena essas informações em um local especificado que pode ser acessado em solicitações futuras que o usuário faça.
Observação
Implementação do manipulador de sessão
O v5.4 Laravel MongoDB introduz a classe dedicada
MongoDbSessionHandler
que estende a classe Laravel DatabaseSessionHandler
para armazenar informações da sessão. O driver de sessão mongodb
salva IDs de usuário, endereços IP e agentes de usuário, se presentes.Na versão5.3 e anteriores, o driver de sessão usa a classe MongoDbSessionHandler
do framework Symfony.
Para saber mais sobre o suporte para sessões, consulte
Sessão HTTPna documentação do Laravel.Registrar uma sessão
Antes de registrar uma sessão, você deve configurar sua conexão com o MongoDB no arquivo config/database.php
do aplicativo. Para saber como configurar essa conexão, consulte a etapa
Em seguida, você pode selecionar o driver da sessão e a conexão de uma das seguintes maneiras:
Em um arquivo
.env
, definindo as seguintes variáveis de ambiente:.envSESSION_DRIVER=mongodb # Optional, this is the default value SESSION_CONNECTION=mongodb No arquivo
config/session.php
, conforme mostrado no seguinte código:config/session.phpreturn [ 'driver' => 'mongodb', // Required 'connection' => 'mongodb', // Database connection name, default is "mongodb" 'table' => 'sessions', // Collection name, default is "sessions" 'lifetime' => null, // TTL of session in minutes, default is 120 'options' => [] // Other driver options ];
A lista a seguir descreve outras opções de driver que você pode definir na array options
:
id_field
: Nome de campo personalizado para armazenar o ID da sessão (padrão:_id
)data_field
: Nome de campo personalizado para armazenar os dados da sessão (padrão:data
)time_field
: Nome de campo personalizado para armazenar o carimbo de data/hora (padrão:time
)expiry_field
: Nome de campo personalizado para armazenar o carimbo de data/hora de expiração (padrão:expires_at
)ttl
: Tempo de vida em segundos
Recomendamos que você crie um índice no campo expiry_field
para coleta de lixo. Você também pode expirar automaticamente as sessões no banco de dados criando um índice TTL na coleção que armazena as informações da sessão.
Você pode utilizar o construtor Schema
para criar um índice TTL, como mostrado no seguinte código:
Schema::create('sessions', function (Blueprint $collection) { $collection->expire('expires_at', 0); });
Definir o valor de tempo como 0
na definição do índice instrui o MongoDB a expirar os documentos na hora especificada no campo expires_at
.
Para saber mais sobre como usar o construtor Schema
para criar índices, consulte a seção Criar índices esparsos, TTL e únicos do guia Construtor de esquemas.
Para saber mais sobre índices TTL, consulte Expirar dados de collections configurando TTL no manual do servidor.