Laravel 是 PHP 世界中的一個流行框架,為開發人員提供了簡化工作的強大工具。然而,有時這些便利可能會導致意想不到的問題。在這篇文章中,我將討論 Laravel 中的 TrimStrings 中介軟體如何導致問題以及如何解決這些問題。
TrimStrings 中介軟體在 Laravel 應用程式中用於自動修剪傳入請求資料(例如表單輸入)中的空格。當使用者不小心在輸入欄位的開頭或結尾留下空格時,這特別有用。例如,如果使用者在表單中輸入“ [email protected] ”,並且電子郵件地址周圍有空格,則TrimStrings 中間件將修剪這些空格,確保僅處理“[email protected]” .
此功能有利於防止不必要的空格引起的錯誤以及處理更乾淨的資料。然而,一如既往,在某些特殊情況下,這種預設行為可能會導致意想不到的後果。發生了什麼事?
簽章/雜湊驗證來驗證請求。
此驗證過程遵循簡單的邏輯:
full_name 參數保留了尾隨空格。儘管如此,在我們的伺服器上,這些空格已被修剪,導致哈希驗證失敗。這時我們意識到 TrimStrings 中間件導致了這個問題。
解決方案是什麼?TrimStrings中間件。 Laravel 8 引入了 TrimStrings::skipWhen 方法,它為這種情況提供了量身定制的解決方案。
以下是如何使用提供者應用此解決方案的範例:
use Illuminate\Foundation\Http\Middleware\TrimStrings; use Illuminate\Http\Request; // ... TrimStrings::skipWhen(function (Request $request) { return $request->is('api/v1/integrations/foo-provider/callback'); });此程式碼片段停用特定路由的 TrimStrings 中介軟體。在這種情況下,來自 api/v1/integrations/foo-provider/callback 路由的請求不會發生修剪,確保雜湊驗證過程順利進行。
結論
TrimStrings 中間件在大多數情況下是一個有用的工具,但在這種情況下它可能會導致問題。幸運的是,像 TrimStrings::skipWhen 這樣靈活的解決方案可以讓我們避免此類問題。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3