Qué es Laravel Fortify, el paquete oficial de Laravel para construir las rutas y controladores para la autenticación de usuarios, especialmente adecuado si estás desarrollando un API con Laravel.
En este artículo vamos a presentar un package de Laravel llamado Fortify, que nos permite componer todos los comportamientos del sistema de login de usuarios de Laravel, pero sin introducir ningún código de la parte de del frontend. Además podremos aprender cuáles son los primeros pasos una vez que ya tenemos claro que necesitamos usar Fortify en un proyecto Laravel.
Qué es Laravel Fortify
Laravel Fortify nos permite implementar la lógica de autenticación de aplicaciones Laravel de una manera absolutamente independiente del frontend. Es un paquete que instalaremos opcionalmente, si es que necesitamos autenticación en un proyecto y se encargará de registrar las rutas, controladores y otras piezas necesarias para autenticar usuarios en una aplicación.
Además, ofrece toda una serie de rutas extra, como las que serían necesarias para recordar la clave de los usuarios, la parte de verificación del email del usuario y otras cuestiones relacionadas. Incluso, aparte de todo lo anterior, también permite habilitar el doble factor de autenticación (Two Factor Authentication), cada vez más popular en las aplicaciones web, de una manera cómoda.
Fortify no introduce código del frontend
Fortify tiene la característica de no incluir ningún código frontend, al contrario que otros packages de Laravel, como Breeze o Jetstream. Fortify simplemente nos dará el código necesario para que el backend reciba las solicitudes de login o registro, y demás operativas de autenticación de usuarios, siendo nosotros los responsables de crear en nuestra aplicación frontend toda la operativa necesaria para comunicar con el usuario, como formularios, realizar las solicitudes, recibir las respuestas, mostrar el feedback al usuario, etc.
Por qué usar Laravel Fortify
El uso de Laravel Fortify es perfectamente opcional en una aplicación Laravel. De hecho hay paquetes como Laravel Breeze o Jetstream que serían más frecuentes en las aplicaciones Laravel habituales y que nos ahorran mucho más tiempo de desarrollo, ya que incluyen diversos "starter kits" con más piezas necesarias para el trabajo en la parte de autenticación, como por ejemplo los formularios para hacer el registro, el login, hacer el reset de la clave, etc.
Entonces ¿Por qué querríamos usar Fortify? Podrían haber distintos motivos, aunque principalmente:
- En un sitio web podrías preferir que Laravel no te proporcione nada de código de la parte de frontend, ya que Laravel introduce diversas dependencias de frontend que son perfectamente sustituibles por otras de tu preferencia. Por ejemplo, Laravel usa Tailwind CSS, pero quizás tú prefieras hacer el CSS a mano. Por ejemplo, Laravel te instala cosas como Alpine para el Javascript que quizás tú no deseas en tu proyecto. Lo cierto es que Laravel tiene diversos starter kits, tanto en Breeze como en Jetstream que usan diversos stack de tecnologías frontend (con React, Vue, Livewire, Inertia), por lo que tienes bastantes opciones para elegir, sin embargo nadie te obliga a irte por ninguno de esos caminos.
- Si estás desarrollando un API es muy probable que no desees tener ningún código frontend en el proyecto que va a implementar el servicio web. Ese proyecto tendrá únicamente los endpoints del API pero nada de formularios de autenticación o cosas similares.
Para sitios web es muy frecuente acabar usando un starter kit, aunque sea algo sencillo como Laravel Breeze y acabes reformulando parte del código y tus dependencias Frontend por otras más acordes a tus gustos, ya que los starter kits te ofrecen un buen punto para empezar bastante más sencillo y rápido. Donde verdaderamente le sacas más partido a Fortify es justamente en el desarrollo de proyectos de API. Luego tendrás una SPA / PWA / Movil App que estará generalmente en un proyecto aparte, donde eligirás las tecnologías y desarrollarás la personalización completa de la experiencia de usuario.
Fortify y Sanctum
Los packages Laravel Fortify y Laravel Sanctum irán muchas veces de la mano, ya que se complementan perfectamente.
Sanctum realiza toda la parte de la capa de autenticación de usuarios, ya sea por cookies y sesiones o por tokens de API Fortify ofrece toda la lógica y las rutas de autenticación para que la autenticación se realice
Debemos saber que Sanctum no registra ninguna ruta de la aplicación para permitir acciones necesarias como el login o el registro de usuarios. Para crear todas las rutas y comportamientos necesarios podríamos manualmente crear toda la serie de rutas y controladores que nos harían falta, pero también podemos apoyarnos en Laravel Fortify, lo que resultará mucho más conveniente y ágil.
Fortify es por debajo lo que usa Laravel Jetstream para funcionar. Solamente que Jetstream también te aporta toda la parte del código frontend.
Instalación de Laravel Fortify
Fortify no viene instalado de casa en los proyectos iniciales de Laravel. Para instalar Fortify tendremos que realizar una serie de acciones que vamos a resumir.
Comenzamos realizando la instalación de la dependencia mediante Composer. Para ello usamos el siguiente comando.
composer require laravel/fortify
Recuerda que si estás usando Laravel Sail todos los comandos siguientes serían con "sail
" delante, algo como sail composer require laravel/fortify
Luego tenemos que publicar los archivos que permiten controlar las rutas de Fortify, para el login, registro, etc.
php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"
Por último realizaremos la ejecución de las migraciones.
php artisan migrate
Registrar el service provider de Fortify
Entre los archivos que hemos agregado en la instalación de Fortify encontraremos un ServiceProvider que tenemos que registrar. Se trata de la clase App\Providers\FortifyServiceProvider
que tenemos que agregar al array de providers de config/app.php
.
En el array de providers añadimos la siguiente línea:
App\Providers\FortifyServiceProvider::class,
Siguientes pasos con Fortify
Hasta aquí hemos instalado Laravel Fortify y tenemos ya con nosotros la serie de rutas de aplicación necesarias para trabajar con toda la parte de autenticación de usuarios en nuestro proyecto.
Para verificar que hemos conseguido el objetivo perseguido con la instalación de Laravel Fortify podemos comprobar la lista de rutas de aplicación con este comando:
php artisan route:list
En el siguiente artículo vamos a abordar algunas configuraciones para Fortify que creo que son útiles, y en muchos casos necesarias, para los proyectos de API realizados mediante Laravel.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...