Laravel ist ein beliebtes Framework in der PHP-Welt und bietet Entwicklern großartige Tools, um ihre Arbeit zu vereinfachen. Allerdings können diese Annehmlichkeiten manchmal zu unerwarteten Problemen führen. In diesem Beitrag bespreche ich, wie die TrimStrings-Middleware in Laravel Probleme verursachen kann und wie man sie löst.
Die Middleware TrimStrings wird in Laravel-Anwendungen verwendet, um Leerzeichen automatisch aus eingehenden Anforderungsdaten, wie z. B. Formulareingaben, zu entfernen. Dies ist besonders nützlich, wenn Benutzer versehentlich Leerzeichen am Anfang oder Ende von Eingabefeldern hinterlassen. Wenn ein Benutzer beispielsweise „[email protected]“ mit Leerzeichen um die E-Mail-Adresse in ein Formular eingibt, schneidet die Middleware TrimStrings diese Leerzeichen ab und stellt so sicher, dass nur „[email protected]“ verarbeitet wird .
Diese Funktion ist nützlich, um Fehler zu vermeiden, die durch unnötige Leerzeichen verursacht werden, und um sauberere Daten zu verarbeiten. Allerdings kann dieses Standardverhalten wie immer in bestimmten Sonderfällen zu unbeabsichtigten Folgen führen.
In einem Projekt, bei dem wir die Integration mit einem in Brasilien ansässigen Zahlungsanbieter vornahmen, mussten wir Zahlungsergebnisse über ein Rückrufsystem erfassen und validieren. Der Zahlungsanbieter sendet das Transaktionsergebnis über eine POST-Anfrage an unseren Server und wir validieren die Anfrage, indem wir eine Signatur-/Hash-Verifizierung durchführen.
Dieser Verifizierungsprozess folgt einer einfachen Logik:
Anfangs war es schwer zu verstehen, warum einige gültige Anfragen abgelehnt wurden. Nach der Untersuchung der Nginx-Protokolle stellten wir jedoch fest, dass der Parameter vollständiger_Name in der eingehenden Anfrage nachgestellte Leerzeichen enthielt. Trotzdem wurden diese Leerzeichen auf unserem Server gekürzt, was dazu führte, dass die Hash-Überprüfung fehlschlug. Da wurde uns klar, dass die TrimStrings-Middleware dieses Problem verursachte.
Um solche Probleme zu vermeiden, ist es notwendig, die Middleware TrimStrings für bestimmte Routen oder Anfragen zu deaktivieren. Laravel 8 hat die Methode TrimStrings::skipWhen eingeführt, die eine maßgeschneiderte Lösung für diese Situation bietet.
Unten finden Sie ein Beispiel für die Anwendung dieser Lösung mithilfe eines Anbieters:
use Illuminate\Foundation\Http\Middleware\TrimStrings; use Illuminate\Http\Request; // ... TrimStrings::skipWhen(function (Request $request) { return $request->is('api/v1/integrations/foo-provider/callback'); });
Dieses Code-Snippet deaktiviert die TrimStrings-Middleware für eine bestimmte Route. In diesem Fall erfolgt keine Kürzung für Anfragen, die von der Route api/v1/integrations/foo-provider/callback kommen, um sicherzustellen, dass der Hash-Verifizierungsprozess reibungslos funktioniert.
Die Standardfunktionen von Laravel erleichtern im Allgemeinen die Arbeit, können jedoch in bestimmten Szenarien zu unerwarteten Ergebnissen führen. Daher ist es wichtig zu verstehen, wie die von uns verwendeten Tools funktionieren, und ihre möglichen Auswirkungen sorgfältig zu bewerten. Obwohl die Middleware TrimStrings in den meisten Fällen ein nützliches Tool ist, kann sie in solchen Szenarien Probleme verursachen. Glücklicherweise ermöglichen uns flexible Lösungen wie TrimStrings::skipWhen, solche Probleme zu vermeiden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3