Laravel es un marco popular en el mundo PHP que ofrece a los desarrolladores excelentes herramientas para simplificar su trabajo. Sin embargo, a veces estas comodidades pueden provocar problemas inesperados. En esta publicación, analizaré cómo el middleware TrimStrings en Laravel puede causar problemas y cómo resolverlos.
El middleware TrimStrings se utiliza en aplicaciones Laravel para recortar automáticamente los espacios en blanco de los datos de solicitud entrantes, como las entradas de formulario. Esto es particularmente útil cuando los usuarios dejan accidentalmente espacios al principio o al final de los campos de entrada. Por ejemplo, si un usuario ingresa " [email protected] " con espacios alrededor de la dirección de correo electrónico en un formulario, el middleware TrimStrings recortará estos espacios, asegurando que solo se procese "[email protected]". .
Esta característica es beneficiosa para prevenir errores causados por espacios en blanco innecesarios y para manejar datos más limpios. Sin embargo, como siempre, en ciertos casos especiales, este comportamiento predeterminado puede tener consecuencias no deseadas.
En un proyecto en el que nos estábamos integrando con un proveedor de pagos con sede en Brasil, necesitábamos capturar y validar los resultados de los pagos a través de un sistema de devolución de llamadas. El proveedor de pago envía el resultado de la transacción a nuestro servidor a través de una solicitud POST, y validamos la solicitud realizando una verificación de firma/hash.
Este proceso de verificación sigue una lógica sencilla:
Al principio, era difícil entender por qué se rechazaban algunas solicitudes válidas. Sin embargo, después de inspeccionar los registros de Nginx, notamos que el parámetro full_name en la solicitud entrante conservaba espacios finales. A pesar de esto, en nuestro servidor, estos espacios se habían recortado, lo que provocó que fallara la verificación del hash. Fue entonces cuando nos dimos cuenta de que el middleware TrimStrings estaba causando este problema.
Para evitar este tipo de problemas, es necesario deshabilitar el middleware TrimStrings para rutas o solicitudes específicas. Laravel 8 introdujo el método TrimStrings::skipWhen, que proporciona una solución personalizada para esta situación.
A continuación se muestra un ejemplo de cómo aplicar esta solución utilizando un proveedor:
use Illuminate\Foundation\Http\Middleware\TrimStrings; use Illuminate\Http\Request; // ... TrimStrings::skipWhen(function (Request $request) { return $request->is('api/v1/integrations/foo-provider/callback'); });
Este fragmento de código deshabilita el middleware TrimStrings para una ruta específica. En este caso, no se recortarán las solicitudes provenientes de la ruta api/v1/integrations/foo-provider/callback, lo que garantiza que el proceso de verificación de hash funcione sin problemas.
Las características predeterminadas de Laravel generalmente facilitan las cosas, pero en ciertos escenarios, pueden generar resultados inesperados. Por lo tanto, es importante comprender cómo funcionan las herramientas que utilizamos y evaluar cuidadosamente sus impactos potenciales. Si bien el middleware TrimStrings es una herramienta útil en la mayoría de los casos, puede causar problemas en escenarios como este. Afortunadamente, soluciones flexibles como TrimStrings::skipWhen nos permiten evitar este tipo de problemas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3