Sessão

O middleware de sessão no Lithe gerencia a configuração e o controle da sessão do usuário.

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. O padrão é 'storage/framework/session'.

Exemplo de configuração:

$app->use(Session([
    'lifetime' => 3600,
    'domain' => 'example.com',
    'secure' => true,
    'httponly' => true,
    'samesite' => 'Strict',
    'path' => PROJECT_ROOT . '/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 métodos disponíveis:

  • put(string $name, mixed $value): void

    Define uma variável de sessão.

    $req->session->put('user', 'John Doe');
    
  • get(string $name, mixed $default = null): mixed

    Recupera o valor de uma variável de sessão. Retorna o valor padrão se a variável não estiver definida.

    $user = $req->session->get('user');
    
  • forget(mixed $name): void

    Remove uma ou mais variáveis de sessão.

    $req->session->forget('user');
    
  • destroy(): void

    Destroi todas as variáveis de sessão.

    $req->session->destroy();
    
  • isActive(): bool

    Verifica se a sessão está ativa.

    $isActive = $req->session->isActive();
    
  • regenerate(bool $deleteOldSession = true): bool

    Regenera o ID da sessão. Se $deleteOldSession for true, a sessão antiga será deletada.

    $req->session->regenerate();
    
  • getId(): string|false

    Recupera o ID atual da sessão.

    $sessionId = $req->session->getId();
    
  • setId(string $sessionId): bool

    Define um novo ID para a sessão.

    $req->session->setId('newSessionId');
    
  • all(): array

    Recupera todas as variáveis de sessão.

    $allSessionData = $req->session->all();
    
  • has(string|array $names): bool

    Verifica se uma ou mais variáveis de sessão existem.

    $hasUser = $req->session->has('user');
    

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.