Middleware en Laravel 11: Cómo Personalizarlos

Middleware en Laravel 11: Cómo Personalizarlos

Salva Terol
Salva Terol
Publicado el 18 de agosto, 2024

Laravel 11 ha simplificado el manejo de middleware, facilitando su personalización. El middleware es esencial en las aplicaciones Laravel, actuando como un filtro para las solicitudes HTTP que entran en tu aplicación. En este artículo, exploraremos cómo personalizar middleware en Laravel 11, brindándote la flexibilidad necesaria para adaptar el comportamiento de tu aplicación.

#Introducción a la Personalización de Middleware en Laravel 11

Con el lanzamiento de Laravel 11, se han realizado cambios significativos para simplificar el esqueleto del proyecto. Uno de estos cambios incluye la eliminación de algunas clases de middleware predeterminadas que anteriormente se incluían en los nuevos proyectos. Ahora, la personalización del middleware se realiza directamente en el archivo bootstrap/app.php, ofreciendo un enfoque más centralizado y limpio. A continuación, te mostramos cómo implementar algunas de las personalizaciones más comunes en tus proyectos de Laravel 11.

Middleware Documentación - Laravel 11

#Personalización del Middleware Predeterminado

Cambiar la Redirección de Invitados

Para personalizar dónde se redirigen los invitados, usa el método redirectGuestsTo() en bootstrap/app.php:

    
->withMiddleware(function (Middleware $middleware) {
$middleware->redirectGuestsTo('/admin/login');
})

Anteriormente, esta configuración se realizaba en el archivo Authenticated.php. Ahora, puedes manejarlo de forma más sencilla y centralizada.

Cambiar la Redirección de Usuarios e Invitados

Si deseas personalizar dónde se redirigen tanto usuarios como invitados, utiliza el método redirectTo() en bootstrap/app.php:

    
->withMiddleware(function (Middleware $middleware) {
$middleware->redirectTo(
guests: '/admin/login',
users: '/dashboard'
);
})

Esta configuración reemplaza lo que antes se encontraba en los archivos Authenticated.php y RedirectIfAuthenticated.php.

#Excluir Cookies de la Encriptación

Para personalizar qué cookies no deben ser encriptadas, utiliza el método encryptCookies():

    
->withMiddleware(function (Middleware $middleware) {
$middleware->encryptCookies(except: [
'foo',
'bar',
]);
})

Anteriormente, esto se configuraba en el archivo EncryptCookies.php. Ahora es más fácil de gestionar directamente en el archivo bootstrap/app.php.

#Excluir Rutas de la Protección CSRF

Para personalizar qué rutas deben estar excluidas de la protección CSRF, usa el método validateCsrfTokens():

    
->withMiddleware(function (Middleware $middleware) {
$middleware->validateCsrfTokens(except: [
'/foo/*',
'/bar',
]);
})

Este cambio simplifica lo que antes se gestionaba en el archivo VerifyCsrfToken.php.

#Excluir Rutas de la Validación de Firmas de URL

Si necesitas excluir rutas de la validación de firmas en las URL, usa el método validateSignatures():

    
->withMiddleware(function (Middleware $middleware) {
$middleware->validateSignatures(except: [
'/api/*',
]);
})

Este método es una mejora de lo que antes se hacía en el archivo ValidateSignature.php.

#Evitar la Conversión de Cadenas Vacías

Para evitar que las cadenas vacías se conviertan a null, usa el método convertEmptyStringsToNull():

    
->withMiddleware(function (Middleware $middleware) {
$middleware->convertEmptyStringsToNull(except: [
fn ($request) => $request->path() === 'foo/bar',
]);
})

Anteriormente, para manejar esto se eliminaba el middleware ConvertEmptyStringsToNull en app/Http/Kernel.php. Ahora, es mucho más fácil personalizar este comportamiento.

#Evitar el Recorte Automático de Cadenas

Para evitar que las cadenas se recorten automáticamente, utiliza el método trimStrings():

    
->withMiddleware(function (Middleware $middleware) {
$middleware->trimStrings(except: [
'/foo',
]);
})

Este método sustituye lo que antes se configuraba en el archivo TrimStrings.php.

#Conclusión

Laravel 11 ofrece un enfoque más centralizado y simplificado para la personalización del middleware, facilitando su manejo y adaptación a las necesidades específicas de tu aplicación. Al realizar estas personalizaciones directamente en bootstrap/app.php, obtienes un mayor control y claridad sobre cómo tu aplicación maneja las solicitudes HTTP.

0 Comentarios

Obtenga ayuda o comparta algo de valor con otros lectores.