PHP

PHP Laravel 5.6 – Rest API with Passport: Implementing API REST

En este artículo, aprenderemos cómo implementar una API REST utilizando Passport en Laravel 5.6. Passport es una biblioteca de autenticación de Laravel que facilita la implementación de autenticación de usuarios en una API REST. Con Passport, podemos generar tokens de acceso para autenticar a los usuarios y proteger nuestras rutas de API.

Requisitos previos

Antes de comenzar, asegúrate de tener los siguientes requisitos previos:

– PHP 7.1.3 o superior
– Composer instalado
– Laravel 5.6 instalado

Instalación de Laravel 5.6

Para comenzar, primero debemos instalar Laravel 5.6 en nuestro sistema. Podemos hacer esto utilizando Composer ejecutando el siguiente comando en la terminal:

composer create-project –prefer-dist laravel/laravel nombre-del-proyecto «5.6.*»

Esto creará una nueva instalación de Laravel 5.6 en un directorio llamado «nombre-del-proyecto».

Configuración de Passport

Una vez que tenemos Laravel 5.6 instalado, podemos comenzar a configurar Passport. Primero, debemos instalar Passport utilizando Composer ejecutando el siguiente comando en la terminal:

composer require laravel/passport

Después de instalar Passport, debemos publicar sus archivos de configuración y migraciones ejecutando los siguientes comandos en la terminal:

php artisan vendor:publish –tag=passport-config

php artisan vendor:publish –tag=passport-migrations

Esto copiará los archivos de configuración y migraciones de Passport en nuestro proyecto.

A continuación, debemos ejecutar las migraciones para crear las tablas necesarias para Passport. Podemos hacer esto ejecutando el siguiente comando en la terminal:

php artisan migrate

Una vez que las migraciones se hayan ejecutado correctamente, debemos ejecutar el siguiente comando para generar las claves de encriptación necesarias para Passport:

Recomendado:  PHP Mail: Función y uso para enviar correos electrónicos

php artisan passport:install

Este comando generará las claves de encriptación y las claves de acceso personal para Passport.

Finalmente, debemos agregar el trait «HasApiTokens» a nuestro modelo de usuario. Esto nos permitirá generar tokens de acceso para autenticar a los usuarios. Abre el archivo «app/User.php» y agrega la siguiente línea de código:

use LaravelPassportHasApiTokens;

Y luego agrega el trait «HasApiTokens» a la clase User:

use HasApiTokens;

Creación de rutas y controladores

Ahora que hemos configurado Passport, podemos comenzar a crear nuestras rutas y controladores para nuestra API REST. Primero, abrimos el archivo «routes/api.php» y agregamos las siguientes rutas:

Route::post(‘register’, ‘AuthRegisterController@register’);

Route::post(‘login’, ‘AuthLoginController@login’);

Route::middleware(‘auth:api’)->group(function () {

Route::get(‘user’, ‘UserController@getUser’);

Route::post(‘logout’, ‘AuthLoginController@logout’);

});

Estas rutas nos permitirán registrar usuarios, iniciar sesión, obtener información del usuario autenticado y cerrar sesión.

A continuación, creamos los controladores necesarios para manejar estas rutas. Podemos hacer esto ejecutando los siguientes comandos en la terminal:

php artisan make:controller Auth/RegisterController

php artisan make:controller Auth/LoginController

php artisan make:controller UserController

Esto creará los controladores necesarios en el directorio «app/Http/Controllers».

En el controlador «RegisterController», agregamos el siguiente método para registrar nuevos usuarios:

public function register(Request $request)

{

$validator = Validator::make($request->all(), [

‘name’ => ‘required’,

‘email’ => ‘required|email|unique:users’,

‘password’ => ‘required’,

])

if ($validator->fails()) {

return response()->json([‘error’ => $validator->errors()], 401);

}

$user = User::create([

‘name’ => $request->name,

‘email’ => $request->email,

‘password’ => bcrypt($request->password),

])

$token = $user->createToken(‘MyApp’)->accessToken;

return response()->json([‘token’ => $token], 200);

}

Este método valida los datos enviados por el usuario, crea un nuevo usuario en la base de datos y genera un token de acceso para el usuario.

En el controlador «LoginController», agregamos el siguiente método para iniciar sesión:

public function login(Request $request)

{

$credentials = $request->only(‘email’, ‘password’);

Recomendado:  PHP gmp_intval() Function: Syntax and Usage in PHP

if (Auth::attempt($credentials)) {

$user = Auth::user();

$token = $user->createToken(‘MyApp’)->accessToken;

return response()->json([‘token’ => $token], 200);

} else {

return response()->json([‘error’ => ‘Unauthorized’], 401);

}

}

Este método intenta autenticar al usuario utilizando las credenciales proporcionadas y genera un token de acceso si la autenticación es exitosa.

En el controlador «UserController», agregamos el siguiente método para obtener información del usuario autenticado:

public function getUser(Request $request)

{

return response()->json([‘user’ => $request->user()], 200);

}

Este método simplemente devuelve la información del usuario autenticado.

En el controlador «LoginController», también agregamos el siguiente método para cerrar sesión:

public function logout(Request $request)

{

$request->user()->token()->revoke();

return response()->json([‘message’ => ‘Successfully logged out’], 200);

}

Este método revoca el token de acceso del usuario autenticado, lo que lo desconecta de la API.

Autenticación de usuarios

Ahora que hemos configurado nuestras rutas y controladores, podemos probar la autenticación de usuarios en nuestra API REST. Primero, asegúrate de que tu servidor local esté en funcionamiento ejecutando el siguiente comando en la terminal:

php artisan serve

Esto iniciará el servidor local de Laravel.

Luego, puedes utilizar una herramienta como Postman para enviar solicitudes a nuestra API REST. Primero, registra un nuevo usuario enviando una solicitud POST a la siguiente URL:

http://localhost:8000/api/register

En el cuerpo de la solicitud, envía los siguientes datos en formato JSON:

{

«name»: «John Doe»,

«email»: «john@example.com»,

«password»: «password»

}

Esto creará un nuevo usuario en la base de datos y generará un token de acceso para el usuario.

Luego, inicia sesión enviando una solicitud POST a la siguiente URL:

http://localhost:8000/api/login

En el cuerpo de la solicitud, envía los siguientes datos en formato JSON:

{

«email»: «john@example.com»,

«password»: «password»

}

Esto iniciará sesión en el usuario y generará un nuevo token de acceso.

Recomendado:  PHP Continue: Cómo utilizar la sentencia 'continue' en PHP

Finalmente, puedes obtener información del usuario autenticado enviando una solicitud GET a la siguiente URL:

http://localhost:8000/api/user

Asegúrate de incluir el token de acceso en el encabezado de la solicitud utilizando la siguiente clave-valor:

Authorization: Bearer {token}

Esto devolverá la información del usuario autenticado en formato JSON.

Protección de rutas

Ahora que hemos implementado la autenticación de usuarios en nuestra API REST, podemos proteger nuestras rutas para que solo los usuarios autenticados puedan acceder a ellas. Para hacer esto, simplemente agregamos el middleware «auth:api» a nuestras rutas que queremos proteger.

Por ejemplo, en el archivo «routes/api.php», hemos envuelto nuestras rutas protegidas en el siguiente grupo de middleware:

Route::middleware(‘auth:api’)->group(function () {

Route::get(‘user’, ‘UserController@getUser’);

Route::post(‘logout’, ‘AuthLoginController@logout’);

});

Esto asegurará que solo los usuarios autenticados puedan acceder a estas rutas.

Pruebas de la API

Ahora que hemos implementado nuestra API REST con Passport en Laravel 5.6, podemos probarla utilizando una herramienta como Postman. Podemos enviar solicitudes a nuestras rutas protegidas y verificar que solo los usuarios autenticados puedan acceder a ellas.

Por ejemplo, podemos enviar una solicitud GET a la siguiente URL para obtener información del usuario autenticado:

http://localhost:8000/api/user

Asegúrate de incluir el token de acceso en el encabezado de la solicitud utilizando la siguiente clave-valor:

Authorization: Bearer {token}

Esto devolverá la información del usuario autenticado en formato JSON si el usuario está autenticado correctamente.

Conclusión

En este artículo, hemos aprendido cómo implementar una API REST utilizando Passport en Laravel 5.6. Passport nos permite generar tokens de acceso para autenticar a los usuarios y proteger nuestras rutas de API. Hemos configurado Passport, creado nuestras rutas y controladores, implementado la autenticación de usuarios y protegido nuestras rutas. Ahora podemos crear una API REST segura y autenticada utilizando Laravel 5.6 y Passport.

Author

osceda@hotmail.com

Leave a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *