Rumah > Artikel > pembangunan bahagian belakang > Bagaimana Laravel's TrimStrings Middleware Boleh Menyebabkan Isu
Laravel ialah rangka kerja yang popular di dunia PHP, menawarkan alat yang hebat kepada pembangun untuk memudahkan kerja mereka. Walau bagaimanapun, kadangkala kemudahan ini boleh membawa kepada masalah yang tidak dijangka. Dalam siaran ini, saya akan membincangkan bagaimana TrimStrings middleware dalam Laravel boleh menyebabkan isu dan cara menyelesaikannya.
Perisian tengah TrimStrings digunakan dalam aplikasi Laravel untuk memangkas ruang putih secara automatik daripada data permintaan masuk, seperti input borang. Ini amat berguna apabila pengguna secara tidak sengaja meninggalkan ruang pada permulaan atau penghujung medan input. Contohnya, jika pengguna memasukkan " user@example.com " dengan ruang di sekeliling alamat e-mel dalam borang, TrimStrings middleware akan memangkas ruang ini, memastikan hanya "user@example.com" diproses .
Ciri ini bermanfaat untuk mencegah ralat yang disebabkan oleh ruang kosong yang tidak diperlukan dan untuk mengendalikan data yang lebih bersih. Walau bagaimanapun, seperti biasa, dalam kes khas tertentu, tingkah laku lalai ini boleh membawa kepada akibat yang tidak diingini.
Dalam projek di mana kami menyepadukan dengan penyedia pembayaran yang berpangkalan di Brazil, kami perlu menangkap dan mengesahkan keputusan pembayaran melalui sistem panggil balik. Pembekal pembayaran menghantar hasil transaksi ke pelayan kami melalui permintaan POST dan kami mengesahkan permintaan dengan melakukan pengesahan tandatangan/cincang.
Proses pengesahan ini mengikut logik yang jelas:
Pada mulanya, sukar untuk memahami mengapa beberapa permintaan yang sah ditolak. Walau bagaimanapun, selepas memeriksa log Nginx, kami mendapati bahawa parameter full_name dalam permintaan masuk mengekalkan ruang belakang. Walaupun begitu, pada pelayan kami, ruang ini telah dipangkas, menyebabkan pengesahan cincang gagal. Ketika itulah kami menyedari bahawa perisian tengah TrimStrings menyebabkan isu ini.
Untuk mengelakkan masalah seperti itu, adalah perlu untuk melumpuhkan TrimStrings perisian tengah untuk laluan atau permintaan tertentu. Laravel 8 memperkenalkan kaedah TrimStrings::skipWhen, yang menyediakan penyelesaian yang disesuaikan untuk situasi ini.
Di bawah ialah contoh cara menggunakan penyelesaian ini menggunakan pembekal:
use Illuminate\Foundation\Http\Middleware\TrimStrings; use Illuminate\Http\Request; // ... TrimStrings::skipWhen(function (Request $request) { return $request->is('api/v1/integrations/foo-provider/callback'); });
Coretan kod ini melumpuhkan perisian tengah TrimStrings untuk laluan tertentu. Dalam kes ini, pemangkasan tidak akan berlaku untuk permintaan yang datang daripada laluan api/v1/integrations/foo-provider/panggil balik, memastikan proses pengesahan cincang berfungsi dengan lancar.
Ciri lalai Laravel pada umumnya menjadikan perkara lebih mudah, tetapi dalam senario tertentu, ciri tersebut boleh membawa kepada hasil yang tidak dijangka. Oleh itu, adalah penting untuk memahami cara alatan yang kami gunakan beroperasi dan menilai potensi kesannya dengan teliti. Walaupun perisian tengah TrimStrings ialah alat yang berguna dalam kebanyakan kes, ia boleh menyebabkan isu dalam senario seperti ini. Nasib baik, penyelesaian fleksibel seperti TrimStrings::skipWhen membolehkan kami mengelakkan masalah sedemikian.
Atas ialah kandungan terperinci Bagaimana Laravel's TrimStrings Middleware Boleh Menyebabkan Isu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!