JWT (Json Web Tokens), nos permite representar los datos del usuario de forma segura. La autenticación JWT es usada cuando trabajamos con una API. Cuando el usuario inicia sesión usando su email y contraseña, se devuelve un token. Este token se usa en las posteriores llamadas a la API. El token es enviado en las cabeceras de las peticiones protegidas de la API.

En este post vamos a implementar el sistema de autenticación JWT en un proyecto Laravel 5.6

jwt laravel 5.6

jwt laravel 5.6

Creamos un proyecto Laravel 5.6 nuevo desde composer:

composer create-project laravel/laravel lr-jwt-auth 5.6 --prefer-dist

También una base de datos de la que haga uso y agregamos las credenciales de esta al fichero .env del proyecto para poder establecer conexión con ella.

1. Agregar dependencias.

Agregamos al fichero composer.json las siguientes dependencias:

“require”: {
...
 “tymon/jwt-auth”: “1.0.0-rc.2”
...
},

Y ejecutamos el comando composer update desde la consola para que sean descargadas al proyecto.

2. Configurar JWT Auth

Añadimos el JWT Service Provaider y Facades. Abrimos el fichero config/app.php  y agreamos al array provider: 

Tymon\JWTAuth\Providers\LaravelServiceProvider::class,

Y al array aliases el jwt-auth facades como:

'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,

Ahora publicamos los ficheros de configuración de vendor al proyecto:

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

Se habrá generado el fichero config/jwt.php que permite configurar los aspectos básicos de este paquete. Generamos la clave secreta con:

php artisan jwt:secret

3. Crear validación de formulario para cada petición de registro

php artisan make:request RegisterFormRequest

Escribimos las reglas de validación indicadas a continuación:

Actualizamos el modelo del Usuario app/User.php con lo siguiente:

4. Crear el controlador para los métodos login, registro y logout

php artisan make:controller AuthController

Copiamos todas las funciones que se indican en el siguiente fragmento:

Con esto ya tenemos todas las funciones correspondientes al inicio de sesión, registro, obtención de datos y cerrar sesión incluidas.

5. Rutas

Ahora tenemos que dar de alta las siguientes rutas en el fichero routes/api.php:

  • La ruta /auth/user devuelve la información del usuario logueado. Evidentemente requiere que el usuario haya sido logueado.
  • La ruta /token/refresh comprueba que el token actual es valido y si lo es, refresca el token.

6. Probar en Postman

Captura realizando login desde Postman:

Una vez logueado, podemos usar dicho token para realizar futuras peticiones donde se requiere estar logueado, por ejemplo:

jwt get api laravel

Comparte el post