Saltar al contenido

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:

  1. Separan responsabilidades: Permiten gestionar tareas comunes (como la autenticación) fuera de los controladores, manteniendo el código más limpio y organizado.

  2. Reutilización: Puedes aplicar el mismo middleware a múltiples rutas o grupos de rutas.

  3. Flexibilidad: Al estar basados en el patrón Pipeline, puedes controlar el flujo de solicitudes y respuestas de forma modular.

  4. 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 EnsureUserHasRole

Esto 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

school Curso completo

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.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje