laravel

Tutorial de Laravel Passport

Tutorial de Laravel Passport
Se implementan múltiples funciones de autenticación en Laravel versión 5.2. Se requieren diferentes sistemas de autenticación para implementar diferentes rutas que requieren mucho tiempo y son ineficientes. El mismo sistema de autenticación se puede utilizar para Web y API mediante el uso de una función de autenticación basada en token. Pero este sistema de autenticación no es más seguro para la aplicación. Ahora, el sistema de autenticación de la aplicación Laravel se puede proteger mediante el nuevo Pasaporte función de autenticación de Laravel. Utiliza dos ENV que son los secretos de la API OAUTH del pasaporte Laravel. Estos son API_CLIENT_ID y API_CLIENT_SECRET. Se genera un token de acceso para cada usuario cuando se usa el pasaporte Laravel y le permite al usuario acceder a algunos puntos finales seguros. En este tutorial se muestra cómo puede construir un sistema de autenticación API seguro utilizando el pasaporte Laravel y acceder al contenido autorizado.

Ventajas de usar Laravel Passport:

El protocolo OAUTH2 se puede integrar con la aplicación Laravel usando la contraseña de Laravel. Cuando el usuario desea recuperar o insertar datos de la aplicación, este protocolo enviará la solicitud de acceso. El permiso se le dará al usuario autorizando al usuario para acceder. Algunos de los principales beneficios de la autenticación de pasaportes se mencionan a continuación.

Prerrequisitos:

Debe realizar la siguiente tarea antes de instalar y usar Laravel Passport para la autenticación de usuario.

Instale Laravel Passport:

Ejecute el siguiente comando desde la terminal para instalar el paquete Laravel Passport usando el compositor.

$ composer requiere laravel / pasaporte

Necesitará crear el usuarios tabla en la base de datos antes de instalar el paquete de pasaporte. Tres archivos de migración y un Usuario El modelo se ha generado automáticamente cuando se crea un nuevo proyecto de Laravel. Uno de ellos se utiliza para crear un usuarios mesa. Vaya a la carpeta del proyecto Laravel y ejecute el siguiente comando de migración para crear el usuarios mesa.

$ php migrar artesanal

Ejecute el siguiente comando para instalar el paquete de pasaporte para el proyecto.

$ php artisan passport: instalar

Obtendrá la siguiente información después de instalar correctamente el pasaporte Laravel en su proyecto. Aquí, se generan dos claves secretas. Uno para cliente de acceso personal y otro para cliente de concesión de contraseña.

Configuración del pasaporte de Laravel:

Abre el Usuario modelo que se encuentra en la ubicación, Aplicación \ modelo.php desde un editor y modifique el modelo como se muestra a continuación. Agregar Laravel \ Pasaporte \ HasApiTokens al comienzo de la clase y use HasApiTokens y Notifiable dentro de la clase.

Aplicación de espacio de nombres;
use Illuminate \ Contracts \ Auth \ MustVerifyEmail;
use Illuminate \ Foundation \ Auth \ User como autenticable;
use Illuminate \ Notifications \ Notifiable;
// Agregado aquí
use Laravel \ Passport \ HasApiTokens;
class User amplía Authenticatable

// Modificado aquí
use HasApiTokens, Notificable;
/ **
* Los atributos que son asignables en masa.
*
* @var matriz
* /
protegido $ rellenable = [
'nombre', 'correo electrónico', 'contraseña',
];
/ **
* Los atributos que deben estar ocultos para las matrices.
*
* @var matriz
* /
protegido $ oculto = [
'contraseña', 'recordar_token',
];
/ **
* Los atributos que se deben convertir a tipos nativos.
*
* @var matriz
* /
$ casts protegidos = [
'email_verified_at' => 'fecha y hora',
];

A continuación, abra app / Providers / AuthServiceProvider.php registrar las rutas necesarias para emitir y revocar tokens de acceso. El método Passport :: routes se llama dentro del método de arranque de AuthServiceProvider. Modifique el contenido del archivo que se muestra a continuación.

App \ Providers de espacio de nombres;
use Illuminate \ Foundation \ Support \ Providers \ AuthServiceProvider como ServiceProvider;
use Illuminate \ Support \ Facades \ Gate;
// el pasaporte se agrega aquí
use Laravel \ Passport \ Passport;
class AuthServiceProvider extiende ServiceProvider

/ ** Las asignaciones de políticas para la aplicación.
*
* @var matriz
* /
$ políticas protegidas = [
'App \ Model' => 'Aplicación \ Políticas \ ModelPolicy',
];
/ **
* Registre cualquier servicio de autenticación / autorización.
*
* @return void
* /
arranque de función pública ()

$ this-> registerPolicies ();
Pasaporte :: rutas ();
Pasaporte :: tokensExpireIn (ahora () -> addDays (15));
Passport :: refreshTokensExpireIn (ahora () -> addDays (30));

A continuación, abra config \ app.php e inserte la siguiente línea en el proveedores matriz para incluir la clase necesaria para usar el pasaporte Laravel.

Laravel \ Passport \ PassportServiceProvider :: clase,

A continuación, abra config \ auth.php y configura el controlador de API para pasaporte en el guardias matriz que se muestra a continuación.

'guardias' => [
'web' => [
'driver' => 'sesión',
'proveedor' => 'usuarios',
],
'api' => [
'driver' => 'pasaporte',
'proveedor' => 'usuarios',
'hash' => falso,
],
],

Implementar controlador para registro y autenticación:

Debe crear un controlador para implementar el sistema de autenticación utilizando el paquete de pasaporte. Ejecute el siguiente comando desde la carpeta raíz del proyecto para crear ApiController.

$ php artisan make: controlador ApiController

En la siguiente parte de este tutorial, se agregan tres métodos dentro del ApiController para crear un nuevo usuario, autenticar a un usuario y obtener la información detallada de un usuario autenticado.

A. Registrarse

Se puede crear un nuevo usuario en el usuarios tabla implementando una Registrarse() método. Agregue el siguiente código dentro del ApiController para implementar la API de registro. Los valores de campo necesarios para crear un nuevo usuario son recuperados por el argumento, $ solicitud del método Registrarse(). Validador La clase se usa para verificar que los valores del campo sean válidos o no según las reglas de validación definidas. Si el falla () El método devuelve verdadero, luego devolverá un mensaje de error en formato JSON. Si el falla () El método devuelve falso, luego se generará una contraseña hash y se insertará nueva información de usuario en la tabla de usuarios. Se generará un token después de crear el nuevo usuario y se devolverá un mensaje de éxito con el valor del token.

registro de función pública (Solicitar $ solicitud)

/ ** Validar los datos usando reglas de validación
* /
$ validator = Validator :: make ($ request-> all (), [
'nombre' => 'requerido',
'email' => 'obligatorio | email',
'contraseña' => 'requerido',
]);
/ ** Verifique que la validación falle o no
* /
if ($ validador-> falla ())
/ ** Devolver mensaje de error
* /
return response () -> json (['error' => $ validador-> errores ()]);

/ ** Almacenar todos los valores de los campos
* /
$ newuser = $ request-> all ();
/ ** Crea una contraseña encriptada usando el hash
* /
$ newuser ['contraseña'] = Hash :: make ($ newuser ['contraseña']);
/ ** Insertar un nuevo usuario en la tabla
* /
$ usuario = Usuario :: crear ($ nuevousuario);
/ ** Crea un token de acceso para el usuario
* /
$ éxito ['token'] = $ usuario-> createToken ('AppName') -> accessToken;
/ ** Devolver mensaje de éxito con valor de token
* /
return response () -> json (['éxito' => $ éxito], 200);

B. Acceso:

Cualquier usuario puede autenticarse implementando el inicio de sesión () método. Agregue el siguiente código dentro ApiController para implementar una API de inicio de sesión. Los campos obligatorios para autenticar a un usuario se recuperan del $ solicitud de el inicio de sesión () método. intento() El método comprobará los valores de Email y contraseña para la autenticación. Si los valores coinciden con los valores del usuarios tabla, se recuperará el registro de ese usuario en particular y se devolverá un valor de token. Si la autenticación falla, una No autorizado el mensaje será devuelto.

inicio de sesión de función pública (Solicitar $ solicitud)

/ ** Leer las credenciales pasadas por el usuario
* /
$ credenciales = [
'email' => $ solicitud-> correo electrónico,
'contraseña' => $ solicitud-> contraseña
];
/ ** Verifique que las credenciales sean válidas o no
* /
if (auth () -> intento ($ credenciales))
/ ** Almacenar la información del usuario autenticado
* /
$ usuario = Auth :: usuario ();
/ ** Crear token para el usuario autenticado
* /
$ éxito ['token'] = $ usuario-> createToken ('AppName') -> accessToken;
return response () -> json (['éxito' => $ éxito], 200);
demás
/ ** Devolver mensaje de error
* /
return response () -> json (['error' => 'No autorizado'], 401);

C. Detalle de usuario

Puede obtener la información detallada de cualquier usuario después de la autenticación implementando la API de usuario. Agregue el siguiente código en el ApiController para recuperar la información detallada de cualquier usuario autenticado.

función pública user_info ()

/ ** Recuperar la información del usuario autenticado
* /
$ usuario = Auth :: usuario ();
/ ** Devolver los datos del usuario
* /
return response () -> json (['éxito' => $ usuario], 200);

Ruta API para el controlador:

Abre el rutas \ aplicación.php archivar y modificar el contenido con los siguientes códigos para definir la ruta de inicio de sesión, la ruta de registro y la ruta de detalles para los servicios de API.

/ ** Ruta para la API de inicio de sesión * /
Route :: post ('iniciar sesión', '[correo electrónico protegido]');
/ ** Ruta para registro API * /
Route :: post ('registrarse', '[correo electrónico protegido]');
/ ** Ruta para obtener detalles API de usuario * /
Ruta :: middleware ('auth: api') -> grupo (función ()
Route :: post ('detalles', '[correo electrónico protegido] _info');
);

Ejecute el siguiente comando para iniciar el servidor de desarrollo de Laravel.

$ php servicio artesanal

Pruebe la autenticación de API con cartero:

Postman es una herramienta muy útil para probar API RESTful. La solicitud HTTP se puede generar muy fácilmente para probar las funcionalidades de la API utilizando la interfaz de usuario de esta aplicación sin escribir una gran cantidad de código para enviar solicitudes. Postman puede manejar varias solicitudes HTTP y utilidades para desarrollar API. Tiene versiones de pago y gratuitas para Linux.

Instalar Postman Agent:

Ejecute el siguiente comando desde la terminal para instalar un agente de cartero en Ubuntu.

$ sudo snap instalar cartero

Abra la aplicación después de la instalación. La siguiente interfaz aparecerá después de abrir la nueva ventana del cartero.

API de registro de prueba:

Haga clic en el crear una solicitud enlace para abrir la ventana de solicitud. El servidor de desarrollo de Laravel se ejecuta en el puerto 8000 por defecto que se usa aquí. Si está utilizando un puerto diferente, debe modificar el número de puerto en su URL. El método POST se selecciona del menú desplegable y la siguiente URL se utiliza para enviar una solicitud de API para registrar la API.

http: // localhost: 8000 / api / register

Se definen tres campos como campos obligatorios para usuarios tabla para crear un nuevo usuario. Estos son nombre, Email, y contraseña. Establezca tres claves y valores para estos campos que se muestran a continuación y haga clic en el enviar botón. La Registrarse() método de ApiController se llamará de acuerdo con la ruta si la solicitud se envía correctamente.

La siguiente respuesta aparecerá si el nuevo registro de usuario se inserta correctamente en el usuarios mesa. El código de respuesta, 200 indica que la solicitud HTTP fue exitosa y se genera un token después de insertar el nuevo usuario que se muestra en el cuerpo de la respuesta en formato JSON.

Prueba de API de inicio de sesión:

Selecciona el CORREO método como el Registrar API que se muestra antes. Establezca la siguiente URL en la barra de direcciones para enviar una solicitud de API para la API de inicio de sesión.

http: // localhost: 8000 / api / login

Dos campos son obligatorios para autenticar a cualquier usuario en función de los registros del usuarios mesa. Estos son Email y contraseña. Establezca dos claves y valores para estos campos que se muestran a continuación y haga clic en el enviar botón. La acceso() método de ApiController se llamará de acuerdo con la ruta si la solicitud se envía correctamente.

La siguiente respuesta aparecerá si el usuario se autentica con éxito según los registros del usuarios mesa. El código de respuesta, 200 indica que la solicitud HTTP fue exitosa. El valor del token se genera después de autenticar al usuario y devuelve el cuerpo de la respuesta en formato JSON.

Obtendrá el siguiente cuerpo de respuesta cuando se proporcionen las credenciales incorrectas para autenticar al usuario. 401 Aquí se genera un código de error para indicar un acceso no autorizado.

Prueba API de detalles de usuario:

Es necesario configurar algunos parámetros de encabezado antes de enviar la solicitud de API de detalles. Haga clic en el encabezados pestaña de la sección de solicitud y agregue tres valores de encabezado para identificar al usuario autenticado. El valor del token se copia del cuerpo de la respuesta y se establece para el valor de autorización.

Aceptar: aplicación / json
Tipo de contenido: aplicación / json
Autorización:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiNDU3OWUwNmEwZ
jE3ZWNmYThhOTkxNDJkMmQwZDQxYzU4MGFiMDM3OTc4NTIwYzA4NTJjZTk2MWU4NGFkYjE3ODU
wMzc3OTIwMzk3OWVmNTkiLCJpYXQiOjE1OTkyNzk3MTYsIm5iZiI6MTU5OTI3OTcxNiwiZXhwI
joxNjMwODE1NzE2LCJzdWIiOiI1Iiwic2NvcGVzIjpbXX0.fJYvzFsiD4WKcklpZ2-
w64UVOOk1DqMo_KbLCI7C00xQKhuQupVkgRULUx3e2mJIoJ8ET0MLngpUIFFS8Aet7W8KoQCcL
SzMKUjot4fhONQ5Dyzmb4csAIXFVoKK8YRm4gPCq-b1OW5e9K5gcrLKmqnt9a6nywoGHkXqq4GE
qHnHFgPnOkMfjbtGuKIj3aMtA2i7qHcbWdIt5O970LdM1ehW-AuMESZflJdjfN6zkHK4Kc93-
vLpZbgEKh1XD0p1fJEWyms590oIPERuWVS1hfCkpsnIFYRoB04TYTYPHdL25qwBW0m0VaTQG9fH
7xgiJFSkyS-FGmmUc7lglM8JUeVYmZfv-o5XVRlQ2EOCjLHSOFvKkuFzw-j3YfKaHBWY3Oo4gRD4
foWV2tGvDnF1zR_b11BDfDgv3rrl8mZNHx9DHjaFqUbWEdsnZbWouOR9wy
Vh0GI1fcIkWoWSM_BoNaTFittr9zqjkIWrQtKS3kVqsnCF8nIKXLp2dGaXdd8mWYWoq34NLYHhp
0u2TRy_BFFe3y_icgQVLBHcmEwdiXJISM8l9ctlodgRqA3wAQP11fV8cJfAIP2mfz3uUVY6nDqAr
kv6zRQ9oE4NCsqVvXeVp7RWOfakpu7EcQnwVDoq4hZ5j9tWx8bZ5eybMgHvRXkQKheie2j6Gzt0-rBUrFM

La sección de encabezados de la parte de la solicitud se verá como la siguiente imagen. Debe establecer el valor de su token que se genera en el cuerpo de respuesta de su agente de cartero.

A continuación, haga clic en el Autorización pestaña de la sección de solicitud y seleccione Token de portador como tipo de autorización del Tipo desplegable.

Ahora, seleccione el CORREO método, establezca la siguiente URL en la barra de direcciones. Llamará al Información de usuario() método de ApiController que recuperará la información detallada del usuario autenticado.

http: // localhost: 8000 / api / details

Si el valor del token y la información del encabezado se proporcionan correctamente, los detalles de ese usuario se devolverán como un cuerpo de respuesta en formato JSON como la siguiente imagen.

Tutorial en video

Conclusión:

La autenticación de pasaportes se está utilizando en muchos sitios web de Laravel ahora por sus características útiles. Hace que el sistema de autenticación de Laravel sea más seguro que la autenticación predeterminada y proporciona otros servicios que no están disponibles en la autenticación predeterminada. Los usos básicos del pasaporte Laravel con el proceso de instalación y configuración se describen en este tutorial correctamente. El uso del agente cartero también se muestra aquí para probar la API. Espero que el lector comprenda las funcionalidades del paquete de pasaporte después de leer este tutorial.

El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...
Cómo invertir la dirección de desplazamiento del mouse y los paneles táctiles en Windows 10
Ratón y Panel táctils no solo facilitan la informática, sino que también hacen que sea más eficiente y requieran menos tiempo. No podemos imaginar una...
Cómo cambiar el tamaño, el color y el esquema del puntero del mouse y del cursor en Windows 10
El puntero y el cursor del mouse en Windows 10 son aspectos muy importantes del sistema operativo. Esto también se puede decir de otros sistemas opera...