Los middlewares son una herramienta poderosa en Laravel que permite filtrar las solicitudes HTTP que ingresan a tu aplicación. Actúan como una capa intermedia entre el cliente y el servidor, facilitando tareas como la autenticación, validación o registro de actividades.
¿Qué son los Middlewares?
Un middleware es un mecanismo que intercepta solicitudes HTTP antes de que lleguen al controlador. Puedes usarlos para realizar una variedad de tareas, como:
Verificar si un usuario está autenticado.
Registrar logs de actividad.
Modificar las respuestas HTTP antes de enviarlas al cliente.
Implementar límites de solicitudes (rate limiting).
Validar tokens o datos en la solicitud.
Los middlewares pueden aplicarse de forma global, a grupos de rutas o a rutas específicas.
¿Por qué utilizar Middlewares?
Los middlewares son fundamentales en aplicaciones Laravel porque:
Separan responsabilidades: Permiten gestionar tareas comunes (como la autenticación) fuera de los controladores, manteniendo el código más limpio y organizado.
Reutilización: Puedes aplicar el mismo middleware a múltiples rutas o grupos de rutas.
Flexibilidad: Al estar basados en el patrón Pipeline, puedes controlar el flujo de solicitudes y respuestas de forma modular.
Seguridad: Garantizan que ciertas condiciones se cumplan antes de acceder a recursos específicos.
Cambios en Laravel 11
A partir de Laravel 11, el registro de los middlewares se realiza directamente en el archivo bootstrap/app.php. Esto simplifica la configuración, eliminando la dependencia del Kernel HTTP. Aquí hay ejemplos de cómo hacerlo:
Registrar un Middleware
Registrar un Alias
Puedes registrar un alias para usar el middleware directamente en las rutas:
Prioridad de Middlewares
Los middlewares se pueden ordenar por prioridad para definir el orden en que se ejecutan:
Crear un Middleware
Puedes crear un middleware personalizado usando el comando artisan:
php artisan make:middleware EnsureUserHasRoleEsto generará un archivo en app/Http/Middleware/:
Detalle del parámetro $next en los Middlewares
El $next es un Closure que representa el siguiente paso en el pipeline del middleware. Cuando llamas a $next($request), estás pasando la solicitud al siguiente middleware en la pila o, si es el último, al controlador correspondiente. Esto permite que cada middleware procese la solicitud antes y después del controlador según sea necesario.
Por ejemplo, podrías realizar una acción después de que el controlador haya procesado la solicitud:
Este flujo es útil para tareas como modificar la respuesta, registrar logs o limpiar recursos.
Ejemplo de Middleware con parámetros
Un middleware que acepta un parámetro adicional para verificar roles:
Ejemplo de Middleware sin parámetros
Un middleware básico que no requiere parámetros:
Este middleware verifica si la aplicación está en modo mantenimiento y, de ser así, devuelve una respuesta con un código 503.
Middlewares Preconfigurados
Laravel incluye una lista de middlewares ya configurados para tareas comunes. Aquí tienes un resumen en formato tabla:
Alias | Middleware |
|---|---|
auth | Illuminate\Auth\Middleware\Authenticate |
auth.basic | Illuminate\Auth\Middleware\AuthenticateWithBasicAuth |
auth.session | Illuminate\Session\Middleware\AuthenticateSession |
cache.headers | Illuminate\Http\Middleware\SetCacheHeaders |
can | Illuminate\Auth\Middleware\Authorize |
guest | Illuminate\Auth\Middleware\RedirectIfAuthenticated |
password.confirm | Illuminate\Auth\Middleware\RequirePassword |
precognitive | Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests |
signed | Illuminate\Routing\Middleware\ValidateSignature |
subscribed | \Spark\Http\Middleware\VerifyBillableIsSubscribed |
throttle | Illuminate\Routing\Middleware\ThrottleRequests or ThrottleRequestsWithRedis |
verified | Illuminate\Auth\Middleware\EnsureEmailIsVerified |
Middlewares y el Patrón Pipeline
Es importante mencionar que los middlewares se ejecutan a través de un Pipeline. Este patrón asegura que las solicitudes pasen por una serie de filtros en un orden específico, lo que es clave para mantener un flujo claro y organizado en la aplicación.
Para aprender más sobre el patrón Pipeline, puedes consultar nuestro curso: Aplicando el Patrón de Diseño Pipeline en Laravel.
Recursos Adicionales
Documentación oficial de Laravel sobre middlewares: Laravel 11 Middleware.
Ruta de aprendizaje completa: Ruta de Aprendizaje Laravel 11.
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción