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
- 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
Passo 2: Instalando o Middleware JWT
-
Instalando o Pacote JWT
Para utilizar o middleware JWT, você precisa instalar o pacote
lithemod/jwt
. Execute:
composer require lithemod/jwt
-
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();
Passo 3: Protegendo Rotas com JWT
-
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!']);
});
Passo 4: Gerando Tokens JWT
-
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']);
});
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!