Grupos de Middleware Predeterminados en Laravel
Concepto
Laravel incluye grupos de middleware predeterminados para web y API que contienen middlewares comunes que podrías querer aplicar a tus rutas web y API. Laravel aplica automáticamente estos grupos de middleware a los archivos routes/web.php
y routes/api.php
correspondientes.
Grupos de Middleware Predeterminados
Los grupos de middleware predeterminados en Laravel son:
El Grupo de Middleware web
Illuminate\Cookie\Middleware\EncryptCookies
Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse
Illuminate\Session\Middleware\StartSession
Illuminate\View\Middleware\ShareErrorsFromSession
Illuminate\Foundation\Http\Middleware\ValidateCsrfToken
Illuminate\Routing\Middleware\SubstituteBindings
El Grupo de Middleware api
Illuminate\Routing\Middleware\SubstituteBindings
Ejemplo de Código 1: Añadir Middleware a Grupos Predeterminados
use App\Http\Middleware\EnsureTokenIsValid;
use App\Http\Middleware\EnsureUserIsSubscribed;
// Añadir middleware a los grupos predeterminados
->withMiddleware(function (Middleware $middleware) {
$middleware->web(append: [
EnsureUserIsSubscribed::class,
]);
$middleware->api(prepend: [
EnsureTokenIsValid::class,
]);
});
Explicación del Código 1
En este ejemplo, estamos añadiendo middlewares a los grupos predeterminados de Laravel. A continuación, se explica cada parte del código:
- use App\Http\Middleware\EnsureTokenIsValid; y use App\Http\Middleware\EnsureUserIsSubscribed;: Estas líneas importan las clases de middleware
EnsureTokenIsValid
yEnsureUserIsSubscribed
desde el espacio de nombresApp\Http\Middleware
. Estos middlewares se utilizarán para modificar los grupos de middleware predeterminados. - $middleware->web(append: [EnsureUserIsSubscribed::class]);: Este método añade el middleware
EnsureUserIsSubscribed
al final del grupo de middlewareweb
. Esto significa que este middleware se ejecutará después de los middlewares predeterminados del grupoweb
, asegurando que el usuario esté suscrito antes de permitir el acceso a las rutas web. - $middleware->api(prepend: [EnsureTokenIsValid::class]);: Este método añade el middleware
EnsureTokenIsValid
al inicio del grupo de middlewareapi
. Esto significa que este middleware se ejecutará antes de los middlewares predeterminados del grupoapi
, verificando la validez del token antes de permitir el acceso a las rutas API.
Ejemplo de Código 2: Reemplazar o Eliminar Middleware en Grupos Predeterminados
use App\Http\Middleware\StartCustomSession;
use Illuminate\Session\Middleware\StartSession;
// Reemplazar un middleware predeterminado con uno personalizado
$middleware->web(replace: [
StartSession::class => StartCustomSession::class,
]);
// Eliminar un middleware completamente
$middleware->web(remove: [
StartSession::class,
]);
Explicación del Código 2
En este segundo ejemplo, estamos reemplazando o eliminando middlewares en los grupos predeterminados de Laravel. A continuación, se explica cada parte del código:
- use App\Http\Middleware\StartCustomSession; y use Illuminate\Session\Middleware\StartSession;: Estas líneas importan las clases de middleware
StartCustomSession
yStartSession
. El middlewareStartCustomSession
es un middleware personalizado que reemplazará al middleware predeterminadoStartSession
. - $middleware->web(replace: [StartSession::class => StartCustomSession::class]);: Este método reemplaza el middleware predeterminado
StartSession
con el middleware personalizadoStartCustomSession
en el grupo de middlewareweb
. Esto permite personalizar la lógica de inicio de sesión de la sesión según las necesidades específicas de tu aplicación. - $middleware->web(remove: [StartSession::class]);: Este método elimina el middleware
StartSession
del grupo de middlewareweb
. Esto puede ser útil si deseas desactivar completamente la gestión de sesiones en las rutas web.
Conclusión
Los grupos de middleware predeterminados en Laravel te proporcionan una base sólida para gestionar la lógica de control de acceso y otras operaciones comunes en tus rutas web y API. Al utilizar los métodos web
y api
, puedes personalizar fácilmente estos grupos para satisfacer las necesidades específicas de tu aplicación. Es esencial entender cómo configurar y modificar estos grupos para mantener la integridad y el rendimiento de tu aplicación.
Enlaces
Para más información, visita la página oficial de Laravel: Laravel Middleware Documentation
También puedes ver Laravel en español en: Conozca Laravel
Etiqueta:Middleware