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.