Definiendo Middleware en Laravel
El middleware en Laravel actúa como una capa de filtrado para las solicitudes HTTP que ingresan a nuestra aplicación. En esta lección, aprenderemos cómo crear y utilizar middleware para controlar el acceso a nuestras rutas.
Creación de un Middleware
Para crear un nuevo middleware, utilizamos el comando Artisan make:middleware
. Abre tu terminal y ejecuta:
php artisan make:middleware EnsureTokenIsValid
Este comando generará una nueva clase EnsureTokenIsValid
en el directorio app/Http/Middleware
.
Implementación del Middleware
El middleware generado se ubicará en app/Http/Middleware/EnsureTokenIsValid.php
. Modificaremos su contenido para que solo permita el acceso si el token proporcionado coincide con un valor específico:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class EnsureTokenIsValid
{
public function handle(Request $request, Closure $next): Response
{
if ($request->input('token') !== 'my-secret-token') {
return redirect('/home');
}
return $next($request);
}
}
Explicación Detallada del Código
namespace App\Http\Middleware;
: Define el espacio de nombres para la clase, ubicándola en la estructura de directorios de Laravel.use Closure;
: Importa la clase Closure, que se utiliza para pasar la solicitud al siguiente middleware.use Illuminate\Http\Request;
: Importa la clase Request de Laravel, que representa la solicitud HTTP entrante.use Symfony\Component\HttpFoundation\Response;
: Importa la clase Response, utilizada para devolver respuestas HTTP.class EnsureTokenIsValid
: Define la clase del middleware.public function handle(Request $request, Closure $next): Response
: Este método es el punto de entrada del middleware. Recibe:$request
: La solicitud HTTP actual.$next
: Una función de cierre que pasa la solicitud al siguiente middleware o al controlador.
if ($request->input('token') !== 'my-secret-token')
: Verifica si el token proporcionado en la solicitud coincide con ‘my-secret-token’.$request->input('token')
: Obtiene el valor del parámetro ‘token’ de la solicitud.
return redirect('/home');
: Si el token no coincide, redirige al usuario a la ruta ‘/home’.return $next($request);
: Si el token es válido, pasa la solicitud al siguiente middleware o al controlador.
Visualización en el Navegador
En la pantalla de Chrome, el resultado podría mostrarse de la siguiente manera:
1. Acceso con token válido:
URL:
www.conozcalaravel.test/ruta-protegida?token=my-secret-token
Resultado:
Se muestra el contenido de la ruta protegida
2. Acceso con token inválido:
URL:
www.conozcalaravel.test/ruta-protegida?token=token-incorrecto
Resultado:
Redirección a www.conozcalaravel.test/home
3. Acceso sin token:
URL:
www.conozcalaravel.test/ruta-protegida
Resultado:
Redirección a www.conozcalaravel.test/home
En los casos 2 y 3, verás que la barra de direcciones de Chrome cambia a la URL de la página de inicio (/home) después de la redirección.
Conclusión
El middleware en Laravel proporciona una forma poderosa y flexible de filtrar las solicitudes HTTP que ingresan a tu aplicación. En este ejemplo, hemos creado un middleware que verifica la presencia de un token específico, pero puedes adaptarlo para realizar diversas tareas como:
- Verificar la autenticación del usuario
- Validar permisos o roles
- Registrar información de la solicitud para fines de auditoría
- Modificar la solicitud o la respuesta antes de que llegue a tu lógica de aplicación principal
El uso efectivo de middleware puede ayudarte a mantener tu código limpio y modular, separando las preocupaciones de seguridad y procesamiento de la lógica principal de tu aplicación.
Para más información, visita la documentación oficial de Laravel sobre Middleware
Visita Laravel en español curso de Laravel en Conozca Laravel.
Etiqueta:Middleware