Autenticación API REST usando Laravel Sanctum

Autenticación API REST usando Laravel Sanctum

La autenticación es una parte importante de cualquier proyecto de Laravel. Existen muchos paquetes en Laravel para implementar la autenticación de API REST, como Passport, Sanctum, JWT, etc. Laravel Sanctum es un paquete Laravel simple y ligero para implementar un sistema de autenticación API REST para aplicaciones móviles, aplicaciones de una sola página (SPA) y API basadas en token. Puede generar múltiples tokens API para los usuarios, y la aplicación de una sola página puede autenticarse utilizando la sesión del usuario. Se puede usar como una alternativa a la API de pasaporte de Laravel. Laravel Sanctum es mejor que el pasaporte de Laravel en muchos casos. Es más simple que Laravel Passport, y no requiere autenticación OAuth2 como la autenticación de pasaporte. Las formas de implementar la autenticación de Laravel Sanctum y verificar la API REST utilizando Postman se han mostrado en este tutorial.

Requisitos previos:

Debe completar las siguientes tareas antes de comenzar los pasos para implementar el sistema de autenticación de Laravel Sanctum.

Crear un nuevo proyecto de Laravel llamado sanctumproject. Aquí el compositor se ha utilizado para crear el proyecto Laravel. Si el compositor no está instalado antes de entonces, debe instalarlo antes de ejecutar el siguiente comando.

$ composer create-proyect laravel/laravel sanctumproject

Ir a la carpeta del proyecto.

$ CD SanctumProject

Todos los ejemplos de este tutorial han sido probados en Laravel versión 9+. Verifique la versión instalada de Laravel.

$ PHP Artisan -Versión

Ejecute los siguientes comandos para instalar y ejecutar el cartero.

$ sudo snap instalación de instalación

Base de datos de configuración:

Debe crear una base de datos en MySQL para implementar la tarea de autenticación. Complete las siguientes tareas para crear una base de datos y configurar la base de datos para el proyecto Laravel.

  1. Ejecute el siguiente comando SQL para crear una base de datos llamada l_sanctum del mensaje mysql.
mysql> Crear base de datos l_sanctum;
  1. Abre el .archivo envía del proyecto Laravel e inicializa los valores para la siguiente información basada en la base de datos.
Db_connection = mysql
Db_host = localhost
Db_port = 3306
Db_database = l_sanctum
Db_username = 'nombre de usuario'
Db_password = 'contraseña'

Instalar y configurar Laravel Sanctum:

Debe hacer las siguientes tareas para instalar y configurar el Sanctum de Laravel.

Ejecute el siguiente comando para descargar los archivos necesarios para instalar el paquete Laravel Sanctum.

$ compositor requiere laravel/sanctum

Ejecute el siguiente comando para publicar la configuración de sanctum.

$ PHP Vendor artesanal: Publish -Provider = "Laravel \ Sanctum \ SanctumserviceProvider"

La siguiente salida aparecerá después de publicar el Santuario paquete con éxito.


El archivo de migración para el usuarios La tabla se crea de forma predeterminada al crear el proyecto Laravel. Ejecute el siguiente comando migrar para crear el usuarios tabla utilizada para la autenticación.

$ PHP Artisan Migrate

Configuración de middleware:

Para usar el santuario, debe agregar la siguiente línea en el 'API'Sección de la Núcleo.php archivo. Abre el Núcleo.php Archivo desde la ubicación, aplicación/http/kernel.php, y agregar la línea.

\ Laravel \ sanctum \ http \ middleware \ ASCANSEFRONDENDREQUESTSARESTATEFUL :: Clase,

El 'API'La sección de este archivo se verá como la siguiente imagen.

Crea la API:

Vaya a la carpeta del proyecto y ejecute el siguiente comando para crear el controlador para la autenticación API. Autontroller.El archivo PHP se creará dentro de la carpeta App/HTTP/Controllers después de ejecutar el comando.

$ PHP Artisan Make: Controller AuthController

Abre el Autontroller.php y reemplace el contenido con el siguiente script. El función registrar () se ha utilizado en el script para validar los datos del usuario enviados e insertar los datos válidos en la tabla de usuarios. La función de inicio de sesión () se ha utilizado en el script para autenticar al usuario verificando las credenciales enviadas para el inicio de sesión.

APLICACIÓN DEL PAGO DE NAME \ HTTP \ Controllers;
use iluminar \ http \ solicitud;
use iluminate \ support \ facades \ hash;
use Illuminate \ Support \ facades \ Auth;
Use App \ Models \ User;
clase AuthController extiende el controlador

Registro de funciones públicas (solicitud $ solicitud)
$ post_data = $ request-> validate ([
'nombre' => 'requerido | cadena',
'Correo electrónico' => 'requerido | cadena | correo electrónico | único: usuarios',
'contraseña' => 'requerida | min: 8'
]);
$ user = user :: create ([[
'Nombre' => $ post_data ['nombre'],
'Correo electrónico' => $ post_data ['correo electrónico'],
'contraseña' => hash :: make ($ post_data ['contraseña']),
]);
$ token = $ user-> createToken ('authToken')-> EnsintextToken;
Respuesta de retorno ()-> json ([[
'access_token' => $ token,
'token_type' => 'portador',
]);

Función pública Iniciar sesión (solicitud $ solicitud)
si (!\ Auth :: intento ($ request-> solo ('correo electrónico', 'contraseña')))
Respuesta de retorno ()-> json ([[
'Mensaje' => 'La información de inicio de sesión no es válida.'
], 401);

$ user = user :: where ('correo electrónico', $ request ['correo electrónico'])-> birstorfail ();
$ token = $ user-> createToken ('authToken')-> EnsintextToken;
Respuesta de retorno ()-> json ([[
'access_token' => $ token,
'token_type' => 'portador',
]);

Agregar ruta para la API:

Abre el API.archivo php desde el rutas carpeta y agregar las siguientes líneas. La primera línea se ha utilizado para agregar la información de AuthController. La segunda línea se ha utilizado para agregar la ruta API para registrar el usuario. La tercera línea se ha utilizado para agregar la ruta API para autenticar al usuario registrado.

usar App \ Http \ Controllers \ AuthController;
Ruta :: post ('/registrar', [authController :: class, 'registrar']);
Ruta :: post ('/login', [AuthController :: class, 'Login']);

Prueba de autenticación API usando Postman:

Ejecute la aplicación Postman. Establezca el tipo de solicitud en CORREO y escribe la siguiente URL.

http: // 127.0.0.1: 8000/registrarse

Después de agregar los parámetros requeridos para registrar una nueva cuenta de usuario, haga clic en el botón Enviar. Si la nueva información del usuario se inserta correctamente en la tabla de usuarios, se mostrará una información access_token como la siguiente imagen.


Abre el mesa de usuarios desde la base de datos iniciando sesión en el servidor mysql o abriendo el Phpmyadmin Desde el navegador para verificar cualquier registro nuevo se ha insertado o no en el mesa de usuarios. La siguiente imagen muestra que se ha insertado un nuevo registro de usuario en el usuarios tabla después de enviar los datos utilizando el cartero solicitud.


Ahora, puede consultar la autenticación de la API utilizando el postman. Escriba la siguiente URL en la aplicación Postman después de seleccionar la publicación como tipo de solicitud. Escriba la dirección de correo electrónico válida y la contraseña para autenticar al usuario existente y haga clic en el Enviar botón. Si la información del usuario proporcionada es válida, el Access_Token La información aparecerá como la siguiente imagen. El mensaje de error aparecerá para la información del usuario no válido.

Conclusión:

La forma simple de implementar la autenticación de API en el proyecto Laravel utilizando el Santuario el paquete se ha mostrado en este tutorial. Los usuarios de Laravel obtendrán el concepto de autenticación API y podrán implementar y verificar la autenticación usando Postman después de leer este tutorial.