Tutorial Implementação de autenticação com JWT no Laravel

Implementar um sistema de autenticação robusto é essencial em qualquer aplicação web, e o uso de JWT é uma das melhores opções. Neste tutorial, iremos explorar como implementar um sistema de autenticação JWT em uma aplicação Laravel passo a passo, desde a instalação até a autenticação de usuários. Com as instruções detalhadas e código exemplo, você poderá implementar facilmente esse recurso em sua própria aplicação Laravel.

Tutorial Implementação de autenticação com JWT no Laravel

Passo 1: Instalando o JWT no Laravel

Primeiro, precisamos instalar o pacote JWT no Laravel usando o Composer. Abra seu terminal e navegue até a raiz do projeto e digite o seguinte comando:


composer require tymon/jwt-auth

Aguarde alguns segundos para que o Composer baixe e instale o pacote JWT.

Passo 2: Configurando o JWT no Laravel

Após a instalação do pacote JWT, agora precisamos publicar suas configurações no Laravel. Para fazer isso, execute o seguinte comando no terminal:


php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

Após rodar este comando, uma nova pasta será criada em config/jwt.php, que contém todas as configurações do pacote JWT.

Passo 3: Configurando o Model User no Laravel

Em seguida, precisamos configurar o model User do Laravel para trabalhar com o pacote JWT. Para isso, abra o arquivo app/Providers/AuthServiceProvider.php e adicione o seguinte método no final da classe:


public function boot()
{
    $this->registerPolicies();

    \JWTAuth::viaRequest('api', function ($request) {
        return $request->user();
    });
}

Isso configura o método de autenticação para utilizar o token JWT.

Passo 4: Configurando o Controller de Autenticação no Laravel

Agora precisamos criar um Controller para lidar com a autenticação dos usuários. Digite o seguinte comando no terminal:


php artisan make:controller AuthController

Abra o arquivo app/Http/Controllers/AuthController.php e adicione os seguintes métodos:


use Tymon\JWTAuth\Facades\JWTAuth;

class AuthController extends Controller
{
    public function authenticate(Request $request)
    {
        $credentials = $request->only('email', 'password');

        if (!$token = JWTAuth::attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }

        return response()->json(['token' => $token]);
    }

    public function getAuthenticatedUser()
    {
        try {
            if (! $user = JWTAuth::parseToken()->authenticate()) {
                return response()->json(['user_not_found'], 404);
            }
        } catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
            return response()->json(['token_expired'], $e->getStatusCode());
        } catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
            return response()->json(['token_invalid'], $e->getStatusCode());
        } catch (Tymon\JWTAuth\Exceptions\JWTException $e) {
            return response()->json(['token_absent'], $e->getStatusCode());
        }

        return response()->json(compact('user'));
    }
}

O método authenticate faz a autenticação do usuário e retorna o token JWT. Já o método getAuthenticatedUser verifica se o token é válido e retorna o usuário autenticado.

Passo 5: Criando as Rotas no Laravel

Por fim, precisamos criar as rotas para acessar os métodos criados no controller de autenticação.
Para criar a rota de login, adicione o seguinte código ao arquivo de rotas (routes/api.php):


Route::post('login', 'AuthController@login');

Em seguida, crie o controlador de autenticação (app/Http/Controllers/AuthController.php) e adicione o seguinte código:


php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\User;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $credentials = $request->only('email', 'password');

        if (!$token = auth()->attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }

        return response()->json(['token' => $token]);
    }
}

Este controlador receberá a solicitação de login do usuário e retornará um token JWT válido caso as credenciais fornecidas sejam autenticadas com sucesso.

Passo 6: Proteja as rotas autenticadas.

Agora que você tem um sistema de autenticação funcional, você pode proteger as rotas que exigem autenticação. Para fazer isso, adicione o seguinte código ao arquivo de rotas (routes/api.php):


Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Este trecho de código protege a rota '/user' e permite que somente usuários autenticados acessem.

Esses são os passos finais para implementar um sistema de autenticação robusto com JWT em uma aplicação Laravel. Lembre-se de que este é apenas um exemplo básico e que você pode adaptá-lo e personalizá-lo de acordo com suas necessidades específicas.

Parabéns! Agora você sabe como implementar um sistema de autenticação robusto com JWT em uma aplicação Laravel. Esse é um recurso essencial para qualquer aplicação moderna que precise de autenticação de usuários. Com o JWT, você pode criar tokens que são válidos por um tempo limitado e que podem ser usados para proteger suas rotas de API. Espero que este tutorial tenha sido útil para você. Se tiver alguma dúvida, deixe um comentário abaixo.

Qual é a sua reação?

like

dislike

love

funny

angry

sad

wow