Tutorial de pasaporte de Laravel

Tutorial de pasaporte de Laravel
Se implementan múltiples características de autenticación en Laravel versión 5.2. Se requieren diferentes sistemas de autenticación para implementar diferentes rutas que llevaban mucho tiempo e 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 asegurar utilizando el nuevo Pasaporte característica de autenticación de Laravel. Utiliza dos Env que son los secretos de la API de Laravel Passport Oauth. Estos son API_CLIENT_ID & API_CLIENT_SECRET. Un token de acceso genera para cada usuario cuando se usa el pasaporte de Laravel y permite al usuario acceder a algunos puntos finales seguros. En este tutorial, se muestra en este tutorial cómo puede construir un sistema seguro de autenticación API utilizando el pasaporte de Laravel y el contenido autorizado de acceso.

Ventajas de usar pasaporte Laravel:

El protocolo OAuth2 se puede integrar con la aplicación Laravel utilizando la contraseña de Laravel. Cuando el usuario desea recuperar o insertar datos de la aplicación, la solicitud de acceso será enviada por este protocolo. El permiso se le dará al usuario autorizando al usuario para acceder. Algunos beneficios importantes de la autenticación de pasaporte se mencionan a continuación.

  • La autenticación del pasaporte es mejor que la autenticación predeterminada de Laravel porque también se puede usar para el sitio externo.
  • La autenticación de API normal se puede utilizar para acceder al contenido del sitio de Laravel solo donde se implementa. Pero el sitio externo puede acceder al contenido del sitio de Laravel con el permiso del usuario y token autenticado.

Requisitos previos:

Debe hacer la siguiente tarea antes de instalar y usar el pasaporte de Laravel para la autenticación del usuario.

  • Instale un nuevo proyecto de Laravel
  • Configuración de conexión de base de datos

Instalar pasaporte Laravel:

Ejecute el siguiente comando desde el terminal para instalar el paquete de pasaporte Laravel usando el compositor.

$ compositor 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 usa 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 Artisan Migrate

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

$ PHP Pasaporte artesanal: instalar

Obtendrá la siguiente información después de instalar Laravel Passport con éxito en su proyecto. Aquí, se generan dos claves secretas. Uno para cliente de acceso personal y otro para Password Grant Client.

Configuración de pasaporte de Laravel:

Abre el Usuario modelo que se encuentra en la ubicación, Aplicación \ modelo.php de un editor y modifique el modelo como a continuación. Agregar Laravel \ pasaporte \ hasapitokens Al comienzo de la clase y use Hasapitokens y notificable dentro de la clase.

aplicación de espacio de nombres;
use iluminar \ contracts \ auth \ mustverifyEmail;
use Illuminate \ Foundation \ Auth \ User como autenticable;
usar iluminado \ notificaciones \ notificables;
// agregado aquí
use laravel \ pasaporte \ hasapitokens;
El usuario de la clase se extiende autenticidad

// modificado aquí
usar hasapitokens, notificable;
/**
* Los atributos que son asignables en masa.
*
* @Var Array
*/
protegido $ Fillable = [
'Nombre', 'correo electrónico', 'contraseña',
];
/**
* Los atributos que deben estar ocultos para matrices.
*
* @Var Array
*/
protegido $ Hidden = [
'Contraseña', 'Remember_Token',
];
/**
* Los atributos que deben emitirse a los tipos nativos.
*
* @Var Array
*/
protegido $ casts = [
'Eeltage_verified_at' => 'DateTime',
];

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

Aplicación de espacio de nombres \ Proveedores;
use Illuminate \ Foundation \ Support \ Providers \ AuthServiceProvider como ServiceProvider;
use Illuminate \ Support \ facades \ Gate;
// El pasaporte se agrega aquí
Use Laravel \ Passport \ Passport;
clase AuthServiceProvider extiende ServiceProvider

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

$ this-> registrarpolicies ();
Pasaporte :: rutas ();
Pasaporte :: tokensexpirein (ahora ()-> adddays (15));
Pasaporte :: 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 de Laravel.

Laravel \ Passport \ PassportServiceProvider :: Clase,

A continuación, abra config \ auth.php y configure el controlador de API en pasaporte en el guardia Matriz que se muestra a continuación.

'Guardias' => [
'web' => [
'Driver' => 'Sesión',
'Provider' => 'Usuarios',
],
'API' => [
'Driver' => 'Passport',
'Provider' => 'Usuarios',
'hash' => falso,
],
],

Implementar el controlador para el registro y la 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 Apicontrolador.

$ PHP Artisan Make: Controller Apicontroller

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

A. Registro

Se puede crear un nuevo usuario en el usuarios tabla implementando un registro() método. Agregue el siguiente código dentro del Apicontrolador Para implementar la API de registro. El argumento recupera los valores de campo necesarios para crear un nuevo usuario, $ solicitud del método registro(). Validador La clase se usa para verificar que los valores de campo son válidos o no en función de las reglas de validación definidas. Si el falla () El método devuelve verdadero y luego devolverá un mensaje de error en formato JSON. Si el falla () El método devuelve falso y luego se generará una contraseña hash y se insertará la nueva información del 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 funciones públicas (solicitud $ solicitud)

/** Validar los datos utilizando reglas de validación
*/
$ Validator = Validator :: Make ($ request-> all (), [
'Nombre' => 'requerido',
'correo electrónico' => 'requerido | correo electrónico',
'contraseña' => 'requerida',
]);
/** verificar la validación se convierte en falla o no
*/
if ($ validator-> fails ())
/** Mensaje de error de retorno
*/
Respuesta de retorno ()-> json (['Error' => $ Validator-> errores ()]);

/** Almacene todos los valores de los campos
*/
$ newuser = $ request-> all ();
/** Crear una contraseña encriptada utilizando el hash
*/
$ newuser ['contraseña'] = hash :: make ($ newuser ['contraseña']);
/** Inserte un nuevo usuario en la tabla
*/
$ user = user :: create ($ newuser);
/** Crear un token de acceso para el usuario
*/
$ Success ['token'] = $ user-> createToken ('appname')-> accessToken;
/** Return Mensaje de éxito con valor de token
*/
Respuesta de retorno ()-> JSON (['Success' => $ Success], 200);

B. Acceso:

Cualquier usuario puede ser autenticado implementando el inicio de sesión () método. Agregue el siguiente código adentro Apicontrolador para implementar una API de inicio de sesión. Los campos requeridos para autenticar a un usuario se recuperan del $ solicitud de el inicio de sesión () método. intentar() El método verificará los valores de correo electrónico y contraseña para la autenticación. Si los valores coinciden con los valores del usuarios Tabla, entonces se recuperará el registro de ese usuario en particular y se devolverá un valor de token. Si la autenticación falla, entonces un No autorizado Se devolverá el mensaje.

Iniciar sesión de la función pública (solicitud $ solicitud)

/** Lea las credenciales aprobadas por el usuario
*/
$ credenciales = [
'correo electrónico' => $ request-> correo electrónico,
'contraseña' => $ request-> contraseña
];
/** Verifique que las credenciales son válidas o no
*/
if (auth ()-> intento ($ credencials))
/** Almacene la información del usuario autenticado
*/
$ user = auth :: user ();
/** Crear token para el usuario autenticado
*/
$ Success ['token'] = $ user-> createToken ('appname')-> accessToken;
Respuesta de retorno ()-> JSON (['Success' => $ Success], 200);
demás
/** Mensaje de error de retorno
*/
Respuesta de retorno ()-> json (['Error' => 'no autorizado'], 401);

C. Detalle del usuario

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

función pública user_info ()

/** Recupere la información del usuario autenticado
*/
$ user = auth :: user ();
/** Devolver los detalles del usuario
*/
Respuesta de retorno ()-> json (['éxito' => $ user], 200);

Ruta API para el controlador:

Abre el Rutas \ App.php Archivo y modifique 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 API.

/** Ruta para API de inicio de sesión*/
Ruta :: post ('login', 'apicontroller@login');
/** Ruta para la API de registro*/
Ruta :: post ('registrar', 'apicontroller@registro');
/** Ruta para obtener detalles API de usuario*/
Ruta :: middleware ('Auth: API')-> Group (function ()
Ruta :: post ('detalles', 'apicontroller@user_info');
);

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

$ Php Artisan Servir

Prueba de autenticación API usando Postman:

Postman es una herramienta muy útil para probar API RESTful. La solicitud HTTP se puede generar muy fácilmente para probar las funcionalidades de 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 y utilidades HTTP para desarrollar API. Tiene versiones pagadas y gratuitas para Linux.

Instale el agente de postman:

Ejecute el siguiente comando desde el terminal para instalar un agente postman en Ubuntu.

$ sudo snap instalación de instalación

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:

Clickea 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 de publicación se selecciona del desplegable y la siguiente URL se usa para enviar una solicitud de API para la API de registro.

http: // localhost: 8000/API/Registrarse

Tres campos se definen como campos obligatorios para el usuarios tabla para crear un nuevo usuario. Estos son nombre, correo electrónico, y contraseña. Establezca tres teclas y valores para estos campos que se muestran a continuación y haga clic en el enviar botón. El registro() método de Apicontrolador 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 con éxito 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 respuesta en formato JSON.

API de inicio de sesión de prueba:

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 API de API de inicio de sesión.

http: // localhost: 8000/api/inicio de sesión

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

La siguiente respuesta aparecerá si el usuario se autentica correctamente en función de 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 respuesta en formato JSON.

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

Pruebe la API de detalles del usuario:

Se requieren que algunos parámetros del encabezado se configuren antes de enviar la solicitud de detalles API. Clickea en el encabezado 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 respuesta y se establece para el valor de autorización.

Aceptar: solicitud/JSON
Tipo de contenido: Aplicación/JSON
Autorización:
eyj0exaioijkv1qilcjhbgcioijsuzi1nij9.eyjhdwqioiixiiwianrpijoindu3owuwnmewz
je3zwnmythhotkxndjkmmqwzdqxyzu4mgfimdm3otc4ntiwyza4ntjjztk2mwu4ngfkyje3odu
wmzc3otiwmzk3owvmntkilcjpyxqioje1otkynzk3mtysim5izii6mtu5oti3otcxniwizxhwi
Joxnjmwode1nze2lcjzdwiioii1iiwic2nvcgvzijpbxx0.fjyvzfsid4wkcklpz2-
w64uvook1dqmo_kblci7c00xqkhuqupvkgrulux3e2mjioj8et0mlngpuiffs8aet7w8koqccl
Szmkujot4fhonq5dyzmb4csaixfvokk8yrm4gpcq-b1ow5e9k5gcrlkmqnt9a6nywoghkxq4ge
QHNHFGPNOKMFJBTGUKIJ3AMTA2I7QHCBWDIT5O970LDM1EHW-AUMESZFLJDJFN6ZKHK4KC93-
vlpzbgekh1xd0p1fjewyms590oiperuwvs1hfckpsnifyROB04tytyphdl25qwbw0m0vatqg9fh
7XGIJFSKYS-FGMUC7LGLM8JUEVYMZFV-O5XVRLQ2EOCJLHSOFVKKUFZW-J3YFKAHBWY3OO4GRD4
fowv2tgvdnf1zr_b11bdfdgv3rrl8mznhx9dhjafqubwedsnzbwouor9wy
VH0GI1FCIKWOWSM_BONATFITTR9ZQJKIWRQTKS3KVQSNCF8NIKXLP2DGAXDD8MWYWOQ34NLYHHP
0u2try_bffe3y_icgqvlbhcmewdixjism8l9ctlodgrqa3waqp11fv8cjfaip2mfz3uuvy6ndqar
KV6ZRQ9OE4NCSQVVXEVP7RWOFAKPU7ECQNWVDOQ4HZ5J9TWX8BZ5EYBMGHVRXKQKHEIE2J6GZT0-RBURFM

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

A continuación, haga clic en el Autorización pestaña de la sección de solicitud y seleccionar 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 Apicontrolador que recuperará la información detallada del usuario autenticado.

http: // localhost: 8000/api/detalles

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 de video

Conclusión:

La autenticación del pasaporte está utilizando en muchos sitios web de Laravel ahora para sus funciones ú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 de Laravel con el proceso de instalación y configuración se describen correctamente en este tutorial. El uso del agente postman 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.