Autenticación en Laravel, ¿qué opciones tenemos?

arrow_back Blog

Laravel es un framework de PHP que proporciona un conjunto de herramientas y características para el desarrollo de aplicaciones web. Una de las características más potentes en Laravel es el sistema de autenticación que permite a los usuarios iniciar sesión y proteger rutas y acciones de la aplicación.

Actualmente Laravel no incluye ningún sistema de autenticación por defecto, necesitamos instalar y configurar nosotros el sistema de autenticación que deseemos utilizar, pero tenemos múltiples opciones y todas son realmente sencillas de utilizar.

Opciones de autenticación en Laravel

Laravel ofrece varias opciones de autenticación para que puedas elegir la que mejor se adapte a tus necesidades. A continuación, te describo algunas de las opciones de autenticación disponibles en Laravel:

  1. Autenticación con contraseñas: Esta es la forma más común de autenticación en Laravel. Los usuarios ingresan su nombre de usuario y contraseña para acceder a la aplicación. La contraseña se almacena de forma segura en la base de datos, y se verifica mediante una función de hash al momento del inicio de sesión.

  2. Autenticación con redes sociales: Laravel te permite utilizar la autenticación de redes sociales para permitir que los usuarios inicien sesión en tu aplicación a través de sus cuentas de redes sociales, como Facebook o Google. Para utilizar la autenticación de redes sociales en Laravel, debes utilizar el paquete Laravel Socialite.

  3. Autenticación con tokens: Laravel también permite la autenticación mediante tokens. En lugar de iniciar sesión con un nombre de usuario y contraseña, los usuarios obtienen un token único que se utiliza para autenticar su acceso a la aplicación. Esto puede ser útil en casos en los que no es conveniente o seguro almacenar contraseñas, como en aplicaciones de dispositivos móviles o en aplicaciones que se comunican con otras aplicaciones a través de APIs. Para la autenticación con tokens una buena opción es Laravel Sanctum.

  4. Autenticación de dos factores: Laravel permite la autenticación de dos factores, que requiere que el usuario proporcione una segunda forma de verificación además de su nombre de usuario y contraseña. Esto puede ser un código enviado por SMS, una aplicación de autenticación de dos factores o una clave de un dispositivo de seguridad físico.

A continuación te presento algunos de los sistemas de autenticación que podemos implementar fácilmente en Laravel.

Laravel UI: Autenticación con credenciales en Laravel

Laravel UI es un paquete de Laravel que proporciona un conjunto de plantillas de vista y controladores para la autenticación de usuarios, el registro de usuarios y la recuperación de contraseñas. Puedes utilizar Laravel UI para personalizar fácilmente la interfaz de autenticación de tu aplicación Laravel.

Puedes instalar Laravel UI ejecutando el siguiente comando en tu terminal:

Una vez instalado, puedes generar las vistas y los controladores para la autenticación ejecutando el siguiente comando:

Este comando generará las vistas de autenticación y los controladores necesarios en tu aplicación. También instalará Vue.js y creará los archivos de recursos necesarios para utilizar Vue.js en tus vistas. Si prefieres utilizar otro marco de front-end, como React o Bootstrap, puedes utilizar el siguiente comando en su lugar:

Finalmente, sólo si lo necesitas, modifica tu archivo routes/web.php para utilizar los controladores de autenticación generados por Laravel UI. Puedes hacerlo añadiendo las siguientes líneas de código al archivo:

En este punto lo tendrás todo listo para utilizar Laravel UI como sistema de autenticación en Laravel.

Laravel Breeze: Autenticación con credenciales en Laravel

Breeze es un paquete de Laravel que proporciona un conjunto de plantillas de vista y controladores para la autenticación de usuarios, el registro de usuarios y la recuperación de contraseñas. Breeze es una solución rápida y sencilla para añadir autenticación a tus proyectos Laravel.

Puedes instalar Breeze ejecutando el siguiente comando en tu terminal:

Una vez instalado, puedes generar las vistas y los controladores para la autenticación ejecutando el siguiente comando:

Este comando generará las vistas y los controladores necesarios para la autenticación en tu aplicación. También creará un archivo de recursos que incluye algunos estilos y scripts básicos para la autenticación.

Con esto ya deberías tener la autenticación configurada con Breeze en tu aplicación Laravel. Si quieres personalizar las vistas de autenticación, puedes hacerlo modificando los archivos en la carpeta resources/views/auth.

Laravel Socialite: Autenticación con servicios externos en Laravel

Laravel Socialite es un paquete de Laravel que proporciona una fácil integración con servicios de autenticación externos como Facebook, Twitter y Google. Con Socialite, puedes permitir a los usuarios de tu aplicación iniciar sesión con sus cuentas de redes sociales en lugar de tener que crear una cuenta de usuario en tu aplicación.

Puedes instalar Socialite ejecutando el siguiente comando en tu terminal:

Una vez instalado, debes configurar Socialite para trabajar con las redes sociales que deseas utilizar. Para ello, debes obtener las claves de API y los secretos necesarios para cada red social. Cómo obtener estas claves y secretos depende de la red social que estés utilizando, pero generalmente puedes encontrar esta información en la documentación de la API de la red social o en la configuración de tu aplicación en la red social.

Una vez que tengas las claves y secretos necesarios, debes añadirlos a tu archivo .env:

Una vez que hayas configurado Laravel Socialite y obtenido las claves y secretos necesarios para cada red social, debes crear un controlador para manejar la autenticación con redes sociales. Puedes hacerlo ejecutando el siguiente comando:

Este comando creará un controlador vacío en tu aplicación llamado SocialAuthController. Puedes utilizar este controlador para manejar la autenticación con redes sociales y redirigir al usuario a la página de inicio de sesión de la red social.

A continuación, te muestro un ejemplo de cómo podrías utilizar el controlador SocialAuthController para iniciar sesión con cualquier provider de forma dinámica:

Una vez que hayas creado el controlador, debes crear las rutas necesarias para redirigir al usuario a la página de inicio de sesión de la red social y para manejar el callback de la red social una vez que el usuario haya iniciado sesión. Puedes hacerlo añadiendo las siguientes líneas de código en tu archivo routes/web.php:

Con esto ya deberías tener la autenticación con redes sociales configurada en tu aplicación Laravel. Puedes crear enlaces en tus vistas que redirijan al usuario a la página de inicio de sesión de la red social utilizando el método route de Laravel, como se muestra a continuación:

Laravel Passport: Autenticación con Tokens

Laravel Passport es un paquete de Laravel que proporciona una forma conveniente de implementar la autenticación OAuth2 en tu aplicación de Laravel. Se utiliza para proporcionar acceso de API a tu aplicación de Laravel de manera segura.

Puedes instalar Laravel Passport ejecutando el siguiente comando en tu terminal:

A continuación, debes ejecutar el comando php artisan migrate para crear las tablas necesarias en la base de datos para almacenar los tokens de acceso.

  • 2016_06_01_000001_create_oauth_auth_codes_table

  • 2016_06_01_000002_create_oauth_access_tokens_table

  • 2016_06_01_000003_create_oauth_refresh_tokens_table

  • 2016_06_01_000004_create_oauth_clients_table

  • 2016_06_01_000005_create_oauth_personal_access_clients_table

Luego, debes ejecutar el comando php artisan passport:install para crear las claves de encriptación necesarias y las tablas de acceso y de refresco de tokens.

  • Encryption keys generated successfully.

  • Personal access client created successfully.

  • Client ID: 1

  • Client secret: tgKbxc9rYBX6M1hL03Z1BHTMS4wjfmW7AaoWpkqV

  • Password grant client created successfully.

  • Client ID: 2

  • Client secret: BzEdqr8X6eC3kpPs9K0VDM9n2nhSlHYL5wghYIk1

Añade el trait HasApiTokens a tu modelo User:

Finalmente, en el archivo de configuración config/auth.php de tu aplicación, debes definir un guard de autenticación API y establecer la opción de controlador en passport. Esto le indicará a tu aplicación que use el TokenGuard de Passport al autenticar las solicitudes de API:

Curso de Laravel Passport.

¿Laravel Passport o Laravel Sanctum?

Si tu aplicación necesita implementar OAuth2, entonces debes utilizar Laravel Passport. Sin embargo, si deseas autenticar una aplicación de una sola página, una aplicación móvil o emitir tokens de API, debes optar por Laravel Sanctum. Laravel Sanctum no es compatible con OAuth2; sin embargo, proporciona una experiencia de desarrollo de autenticación de API mucho más simple.

Tutorial completo de Laravel Sanctum.

Laravel Fortify: Autenticación backend en Laravel

Fortify es un paquete de Laravel que proporciona una fácil integración de la autenticación y el registro de usuarios en tu aplicación Laravel. Fortify incluye un conjunto de controladores y rutas predefinidas para manejar la autenticación y el registro de usuarios de manera rápida y sencilla. Lo que no incluye Fortify es el front.

Puedes instalar Fortify ejecutando el siguiente comando en tu terminal:

Una vez instalado, debes ejecutar el comando php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider" para publicar los archivos de Fortify.

Ahora, abre el archivo config/app.php y añade el provider App\Providers\FortifyServiceProvider::class al array de providers:

Sólo te queda definir las vistas de Fortify, pero primero debes decirle a Fortify dónde estarán los archivos de vista para cada proceso. Esto lo puedes hacer a través del FortifyServiceProvider:

Si quieres puedes utilizar el método viewPrefix en lugar de definir manualmente cada vista, tú decides. En cualquier caso, deberás crear cada archivo de vista y definir su contenido para cada formulario.


Como puedes ver, la autenticación en Laravel es algo sencillo y versátil, podemos seleccionar un sistema de autenticación o varios. Espero que esta entrada te haya servido para conocer más acerca del sistema de autenticación en Laravel.

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto