Laravel: Cómo funciona Middleware?

El middleware Laravel es un mecanismo para filtrar las solicitudes HTTP que ingresan a nuestra aplicación.

Nos permite realizar ciertas acciones antes o después de que se procese una solicitud, como autenticación, autorización, registro y almacenamiento en caché.

El middleware se implementa como clases que implementan la interfaz de middleware. Esta interfaz define un método único, handle(), que es responsable de procesar la solicitud entrante. El método handle() recibe dos parámetros: el objeto de solicitud y un cierre que representa el siguiente middleware de la cadena.

Para registrar middleware con su aplicación Laravel, puede usar la propiedad $middleware en el archivo app/Http/Kernel.php de su aplicación. Esta propiedad es una matriz de clases de middleware que se ejecutarán en el orden en que aparecen.

Una vez registrado el middleware, se ejecutará automáticamente para todas las solicitudes entrantes. Laravel primero ejecutará el primer middleware de la cadena, pasándole el objeto de solicitud y un cierre que representa el siguiente middleware de la cadena. Luego, el middleware puede optar por realizar una de las siguientes acciones:

  • Pase la solicitud al siguiente middleware de la cadena llamando al cierre.
  • Finalice la solicitud devolviendo una respuesta.
  • Modifique el objeto de solicitud y páselo al siguiente middleware de la cadena.

Laravel continuará ejecutando middleware en la cadena hasta que uno de los middleware finalice la solicitud o se alcance el último middleware de la cadena.

Laravel incluye una serie de clases de middleware integradas que puede utilizar para proteger y mejorar su aplicación. Por ejemplo, el middleware Authenticate garantiza que los usuarios se autentiquen antes de que puedan acceder a determinadas rutas.

También puede crear su propio middleware personalizado para satisfacer las necesidades específicas de su aplicación. Por ejemplo, podría crear un middleware para registrar todas las solicitudes entrantes o almacenar en caché los resultados de costosas consultas a bases de datos.

A continuación se muestra un ejemplo de una clase de middleware personalizada que registra todas las solicitudes entrantes:

class LogRequestsMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        Log::info($request->method() . ' ' . $request->path());

        return $next($request);
    }
}

Para registrar este middleware con su aplicación, debe agregar la siguiente línea a la propiedad $middleware en el archivo app/Http/Kernel.php de su aplicación:

'log_requests' => \App\Http\Middleware\LogRequestsMiddleware::class,

Una vez registrado, este middleware se ejecutará para todas las solicitudes entrantes y registrará el método de solicitud y la ruta en el archivo de registro de Laravel.

El middleware es una herramienta poderosa que se puede utilizar para implementar una variedad de funciones en su aplicación Laravel. Al comprender cómo funciona el middleware, podrá crear aplicaciones más seguras, eficientes y sólidas.