Creando una clase de middleware simple

Creando una clase de middleware simple

Problema

Desea agregar middleware a su aplicación, pero no sé por dónde empezar.

Solución

Crear una clase de middleware simple.

Paso 1 - Crea la clase

Use Symfony \ Component \ httpfoundation \ request;
use Symfony \ Component \ Httpfoundation \ Response;
use Symfony \ Component \ httpkernel \ httpkernelinterface;
clase Middleware implementa httpkernelinterface
App $ protegido;
/**
* Constructor
*/
función pública __construct (httpkernelinterface $ app)

$ this-> app = $ app;

/**
* Manejar la solicitud, devolver la respuesta
*
* @implements httpkernelinterface :: handle
*
* @param \ symfony \ componente \ httpfoundation \ solicitud $ request
* @param int $ type
* @param bool $ catch
* @return \ symfony \ componente \ httpfoundation \ respuesta
*/
Mango de función pública (solicitud $ solicitud,
$ type = httpkernelinterface :: master_request, $ capt = true)

// 1) Modifique la solicitud entrante si es necesario

// 2) cadena el controlador de aplicaciones para obtener la respuesta
$ respuesta = $ this-> app-> handle ($ solicitud, $ type, $ capt);
// 3) Modifique la respuesta si es necesario

// 4) Devuelve la respuesta
devolver $ respuesta;


?>

Paso 2 - Registre la clase de middleware

Debe hacer esto en el método de registro () de un proveedor de servicios.

Aplicación :: middleware ('myApp \ middleware');

Alternativamente, puede instalar un paquete simple que creé que le permite registrar su middleware en aplicación/inicio/prebotón.php. Ver Laravel-Hooks para más detalles.

Discusión

La clase anterior no hace nada.

Pero es un buen esqueleto para empezar. Obviamente, deberá cambiar el espacio de nombres y el nombre de clase para que se ajuste a su aplicación.

Entonces es posible que desee intentar registrar algo para asegurarse de que funcione. Puede actualizar el método Handle () de su clase como se especifica a continuación.

// en el paso #1) Modifique la solicitud entrante si es necesario
// Registre a un archivo. Desde la aplicación/inicio/global.PHP no ha sido golpeado
// Sin embargo, la fachada de registro aún no está configurada para registrar un archivo todavía. Por lo que sólo
// Escribir directamente a un archivo.
$ logFile = storage_path ().'/Logs/Laravel.registro';
error_log ("Entrada de middleware \ n", 3, $ logFile);
// en el paso #3) Modifique la respuesta si es necesario
// Registre a un archivo. Estamos seguros de usar la fachada de registro ahora que
// debe configurarse en App/Start/Global.php
Registro :: info ("Salida de middleware");

Ahora puedes examinar tu aplicación/almacenamiento/registros/laravel.registro Archivo para ver que su middleware funcione.