Session
O middleware de sessão no Lithe gerencia a configuração e o controle da sessão do usuário.
Instalando o Middleware de Sessão
Para instalar o middleware de Sessão, utilize o Composer:
composer require lithemod/session
Você pode encontrar mais informações e o código fonte do módulo em github.com/lithemod/session.
Usando o Middleware de Sessão
O Lithe inclui um middleware de sessão para gerenciar as sessões de usuários e suas variáveis. Para configurar o middleware na sua aplicação, adicione-o usando o método use()
:
use Lithe\Middleware\Session\session;
$app->use(session());
Isso garante que a sessão seja corretamente iniciada e configurada para todas as requisições.
Configurando o Middleware de Sessão
O middleware de sessão pode ser configurado com os seguintes parâmetros:
- lifetime: Define a duração da sessão em segundos. O padrão é 2592000 segundos (30 dias).
- domain: Define o domínio para o qual o cookie da sessão é válido. O padrão é
null
. - secure: Indica se o cookie da sessão deve ser enviado apenas em conexões seguras (HTTPS). O padrão é
false
. - httponly: Indica se o cookie da sessão deve ser acessível apenas através de requisições HTTP. O padrão é
true
. - samesite: Define o atributo SameSite do cookie da sessão. Pode ser
'Lax'
,'Strict'
ou'None'
. O padrão é'Lax'
. - path: Define o caminho onde os arquivos de sessão serão armazenados.
Exemplo de configuração:
$app->use(session([
'lifetime' => 3600,
'domain' => 'example.com',
'secure' => true,
'httponly' => true,
'samesite' => 'Strict',
'path' => '/../storage/framework/session',
]));
Usando Variáveis de Sessão
Após a configuração, você pode acessar e manipular variáveis de sessão através do objeto Request
. Aqui estão alguns exemplos:
Armazenando uma Variável de Sessão
Para armazenar uma variável na sessão do usuário, utilize o seguinte código:
$app->get('/set-user', function ($req, $res) {
$req->session->put('user', 'John Doe'); // Define a variável de sessão
return $res->send('Usuário definido na sessão!');
});
Recuperando uma Variável de Sessão
Para recuperar o valor de uma variável de sessão, use:
$app->get('/get-session', function ($req, $res) {
$user = $req->session->get('user', 'valor_padrao');
$res->send($user); // Exibe o nome do usuário
});
Removendo uma Variável de Sessão
Para remover uma variável de sessão, faça:
$app->get('/forget-session', function ($req, $res) {
$req->session->forget('user'); // Remove a variável de sessão
});
Destroindo Todas as Variáveis de Sessão
Para destruir todas as variáveis de sessão, utilize:
$app->get('/destroy-session', function ($req, $res) {
$req->session->destroy(); // Destroi todas as variáveis de sessão
});
Verificando se a Sessão Está Ativa
Para verificar se a sessão está ativa, use:
$app->get('/is-session-active', function ($req, $res) {
$isActive = $req->session->isActive(); // Verifica se a sessão está ativa
$res->send($isActive ? 'A sessão está ativa.' : 'A sessão não está ativa.');
});
Regenerando o ID da Sessão
Para regenerar o ID da sessão, faça:
$app->get('/regenerate-session', function ($req, $res) {
$req->session->regenerate(); // Regenera o ID da sessão
});
Recuperando o ID da Sessão
Para obter o ID atual da sessão, utilize:
$app->get('/get-session-id', function ($req, $res) {
$sessionId = $req->session->getId(); // Recupera o ID da sessão
$res->send($sessionId); // Exibe o ID da sessão
});
Definindo um Novo ID para a Sessão
Para definir um novo ID para a sessão, faça:
$app->get('/set-session-id', function ($req, $res) {
$req->session->setId('newSessionId'); // Define um novo ID para a sessão
});
Recuperando Todas as Variáveis de Sessão
Para obter todas as variáveis de sessão, utilize:
$app->get('/all-session-data', function ($req, $res) {
$allSessionData = $req->session->all(); // Recupera todas as variáveis de sessão
$res->send($allSessionData); // Exibe todas as variáveis de sessão
});
Verificando a Existência de Variáveis de Sessão
Para verificar se uma ou mais variáveis de sessão existem, utilize:
$app->get('/check-session', function ($req, $res) {
$hasUser = $req->session->has('user'); // Verifica se a variável user existe
$res->send($hasUser ? 'A variável user existe na sessão.' : 'A variável user não existe na sessão.');
});
Considerações
- Criando o Diretório de Sessão: O middleware garante que o diretório para armazenar as sessões exista. Se não existir, ele será criado.
- Tratamento de Erros: Se ocorrer um erro durante a configuração ou inicialização da sessão, o middleware irá registrá-lo e continuar a execução.