Sessões
O gerenciamento de sessões é essencial para muitas aplicações web, permitindo armazenar informações do usuário entre diferentes requisições. Neste guia, você aprenderá como configurar e utilizar sessões no Lithe de maneira eficiente.
Configuração do Middleware de Sessão
Para utilizar sessões no Lithe, é necessário configurar um middleware responsável por gerenciar as sessões. Este middleware inicializa a sessão e a torna disponível em todas as requisições. Para configurar o middleware de sessão, adicione-o à instância do seu aplicativo Lithe utilizando o método use()
:
use Lithe\Middleware\Session\session;
$app->use(session());
Esta configuração inicializa a sessão com as configurações padrão definidas no middleware.
Usando Sessões
Após a configuração do middleware, você pode acessar e manipular variáveis de sessão em qualquer rota ou controlador.
Definindo Variáveis de Sessão
Para definir variáveis de sessão dentro de uma rota, utilize o método put()
:
$app->get('/set-session', function ($req, $res) {
$req->session->put('user_name', 'John Doe');
return $res->send('Variável de sessão "user_name" definida!');
});
Ou você pode definir variáveis diretamente usando métodos mágicos:
$app->get('/set-session', function ($req, $res) {
$req->session->user_name = 'John Doe';
return $res->send('Variável de sessão "user_name" definida!');
});
Obtendo Variáveis de Sessão
Para obter o valor de uma variável de sessão, use o método get()
dentro de uma rota:
$app->get('/get-session', function ($req, $res) {
$userName = $req->session->get('user_name', 'Guest');
return $res->send('Usuário: ' . $userName);
});
Ou você pode obter variáveis diretamente com métodos mágicos:
$app->get('/get-session', function ($req, $res) {
$userName = $req->session->user_name ?? 'Guest';
return $res->send('Usuário: ' . $userName);
});
Removendo Variáveis de Sessão
Para remover uma variável específica, use o método forget()
dentro de uma rota:
$app->get('/remove-session', function ($req, $res) {
$req->session->forget('user_id');
return $res->send('Variável de sessão "user_id" removida!');
});
Para remover múltiplas variáveis ao mesmo tempo:
$app->get('/remove-multiple-sessions', function ($req, $res) {
$req->session->forget(['user_name', 'last_login']);
return $res->send('Variáveis de sessão removidas!');
});
Para destruir completamente a sessão e remover todas as variáveis:
$app->get('/destroy-session', function ($req, $res) {
$req->session->destroy();
return $res->send('Sessão destruída!');
});
Verificando a Existência de Variáveis de Sessão
Para verificar se uma variável de sessão existe, utilize o método has()
:
$app->get('/check-session', function ($req, $res) {
if ($req->session->has('user_id')) {
return $res->send('Variável "user_id" existe na sessão.');
}
return $res->send('Variável "user_id" não existe na sessão.');
});
O método has()
também suporta a verificação de múltiplas variáveis de sessão ao mesmo tempo:
$app->get('/check-multiple-sessions', function ($req, $res) {
if ($req->session->has(['user_name', 'last_login'])) {
return $res->send('Todas as variáveis de sessão existem.');
}
return $res->send('Nem todas as variáveis de sessão existem.');
});
Configurações Avançadas
Você pode personalizar as configurações de sessão passando um array de opções ao middleware session()
. As opções disponíveis são:
lifetime
: Tempo de vida da sessão em segundos. Define por quanto tempo a sessão será mantida ativa.domain
: Domínio para o cookie de sessão. Define os domínios para os quais o cookie de sessão é válido.secure
: Define se o cookie deve ser enviado apenas por conexões HTTPS. Quandotrue
, o cookie só será transmitido sobre HTTPS.httponly
: Indica se o cookie deve ser acessível apenas via HTTP. Quandotrue
, o cookie não pode ser acessado via JavaScript.samesite
: Configura o atributo SameSite do cookie de sessão. Pode serstrict
,lax
ounone
.
Exemplo de configuração avançada:
$app->use(session([
'lifetime' => 3600, // 1 hora
'secure' => true, // Apenas HTTPS
'httponly' => true, // Acesso restrito a HTTP
]));
Estas configurações ajudam a garantir a segurança e a funcionalidade das sessões em seu aplicativo, permitindo uma gestão mais eficiente e personalizada.