Integrando Autenticação JWT no Lithe

Lithe - Nov 4 - - Dev Community

Neste post, vamos aprender a integrar o middleware JWT (JSON Web Tokens) no Lithe, proporcionando uma autenticação robusta e segura para sua API. O uso de JWT permite que você autentique usuários e proteja rotas sensíveis de forma simples e eficiente.

O que é JWT?

JSON Web Token (JWT) é um padrão aberto (RFC 7519) que define um método compacto e autocontido para transmitir informações entre partes como um objeto JSON. Esses tokens podem ser usados para autenticação, permitindo que você mantenha a sessão de um usuário sem a necessidade de armazenar informações no servidor. O JWT é composto por três partes: cabeçalho (header), payload e assinatura (signature).

Passo 1: Configurando o Ambiente

  1. Instalação do Lithe Primeiro, instale o Lithe, se ainda não o fez. Execute o seguinte comando no terminal:
composer create-project lithephp/lithephp nome-do-projeto
cd nome-do-projeto
Enter fullscreen mode Exit fullscreen mode

Passo 2: Instalando o Middleware JWT

  1. Instalando o Pacote JWT Para utilizar o middleware JWT, você precisa instalar o pacote lithemod/jwt. Execute:
composer require lithemod/jwt
Enter fullscreen mode Exit fullscreen mode
  1. Iniciando a aplicação Abra o arquivo principal src/App.php e adicione o seguinte código para iniciar a aplicação:
use function Lithe\Orbis\Http\Router\router;

$app = new \Lithe\App;

$app->use('/api', router(__DIR__ . '/routes/api'));

$app->listen();
Enter fullscreen mode Exit fullscreen mode

Passo 3: Protegendo Rotas com JWT

  1. Criando uma Rota Protegida No seu projeto Lithe, você pode criar uma rota que requer autenticação. Por exemplo, crie um arquivo chamado src/routes/api.php e adicione:
use Lithe\Http\{Request, Response};
use function Lithe\Orbis\Http\Router\{get};

$auth = new \Lithe\Auth\JWT();

get('/protected', $auth, function(Request $req, Response $res) {
    $user = $req->user; // Dados do usuário passado pelo middleware
    return $res->json(['message' => 'Este é um conteúdo protegido!']);
});
Enter fullscreen mode Exit fullscreen mode

Passo 4: Gerando Tokens JWT

  1. Criando uma Rota para Login Crie uma rota para autenticação onde os usuários podem obter um token JWT. Adicione o seguinte no mesmo arquivo src/routes/api.php:
use Lithe\Http\{Request, Response};
use function Lithe\Orbis\Http\Router\{post};

post('/login', function(Request $req, Response $res) {
     $body = $req->body(); // Supondo que o corpo da requisição contenha 'username' e 'password'

    // Aqui você deve validar as credenciais do usuário (exemplo simplificado)
    if ($body->username === 'admin' && $body->password === 'senha') {
        $user = ['id' => 1]; // Exemplo de usuário
        $token = (new \Lithe\Auth\JWT())->generateToken($user);
        return $res->send(['token' => $token]);
    }

    return $res->status(401)->json(['message' => 'Credenciais inválidas']);
});
Enter fullscreen mode Exit fullscreen mode

Claro! Aqui está a seção atualizada com a informação sobre a definição de uma chave segura e secreta ao usar o JWT:


Considerações Finais

Com isso, você integrou com sucesso o middleware JWT ao Lithe, permitindo autenticação segura e proteção de rotas sensíveis. É importante lembrar que, ao usar o JWT, você deve definir uma chave segura e secreta ao instanciar o objeto JWT, passando-a como o primeiro parâmetro: new JWT('sua_chave_secreta'). Essa chave deve ser complexa e mantida em segredo para evitar fraudes.

Agora você pode expandir sua aplicação conforme necessário e implementar funcionalidades adicionais, como revogação de tokens e gerenciamento de sessões.

Para se aprofundar mais sobre JWT, você pode conferir a documentação oficial aqui.

Sinta-se à vontade para compartilhar suas experiências e dúvidas nos comentários!

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player