Semasa saya menavigasi labirin pembangunan web, satu ciri secara konsisten menerangi laluan saya: sistem perisian tengah Laravel. Middleware bukan sahaja menapis permintaan; ia mengubah aplikasi, memastikan keselamatan, prestasi dan pengalaman pengguna yang lancar. Sama ada anda sedang mengusahakan pengesahan, pengelogan atau kebimbangan silang, perisian tengah boleh membantu anda mengurusnya dengan elegan.
Memahami Middleware
Perisian tengah bertindak sebagai jambatan antara permintaan dan tindak balas, memainkan peranan penting dalam kitaran hayat permintaan-tindak balas dalam aplikasi web. Pertama, mari kita pecahkan apakah permintaan dan respons. Permintaan dibuat oleh pelanggan (biasanya penyemak imbas pengguna) kepada pelayan yang meminta sumber khusus seperti halaman web, data atau perkhidmatan lain.
Permintaan ini membawa maklumat penting, termasuk kaedah HTTP (GET, POST, ...), pengepala dan mungkin badan yang mengandungi data. Sebaik sahaja pelayan menerima permintaan ini, ia memproses maklumat yang diperlukan dan menjana respons.
Respons ialah jawapan pelayan kepada permintaan pelanggan. Ia mengandungi status permintaan (cth., kejayaan, kegagalan), pengepala dan badan yang selalunya termasuk HTML, JSON atau format data lain yang digunakan pelanggan untuk memaparkan halaman web atau melaksanakan tindakan selanjutnya.
Perisian tengah berperanan sebagai perantara yang boleh memeriksa, mengubah suai atau malah menghentikan permintaan dan respons ini. Ia beroperasi sebelum permintaan mencapai logik aplikasi teras dan sebelum respons dihantar semula kepada klien.
Kami memerlukan perisian tengah kerana ia membenarkan kod modular dan boleh diguna semula untuk mengendalikan kebimbangan silang seperti pengesahan, pengelogan dan manipulasi data tanpa mengeruhkan logik aplikasi utama. Sebagai contoh, middleware boleh memastikan bahawa hanya pengguna yang disahkan boleh mengakses laluan tertentu, log setiap permintaan untuk tujuan penyahpepijatan, atau mengubah data permintaan sebelum ia mencapai pengawal.
Mencipta Middleware
Mencipta perisian tengah dalam Laravel adalah mudah. Anda boleh menjana perisian tengah baharu menggunakan perintah Artisan.
php artisan make:middleware CheckAge
Arahan ini akan mencipta fail middleware CheckAge baharu dalam direktori app/Http/Middleware. Di dalam fail ini, anda boleh menentukan logik yang harus dilaksanakan untuk setiap permintaan.
<?php namespace App\Http\Middleware; use Closure; class CheckAge { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if ($request->age <= 200) { return redirect('home'); } return $next($request); } }
Dalam contoh ini, middleware menyemak atribut umur dalam permintaan. Jika umur kurang daripada atau sama dengan 200, ia mengubah hala pengguna ke laluan rumah. Jika tidak, ia membenarkan permintaan diteruskan.
Mendaftar Middleware
Apabila anda telah mencipta perisian tengah anda, anda perlu mendaftarkannya dalam kernel. Kernel ialah teras aplikasi Laravel yang menguruskan keseluruhan kitaran hayat permintaan HTTP. Ia bertindak sebagai hab pusat yang mengatur aliran permintaan melalui pelbagai lapisan perisian tengah sebelum ia mencapai laluan dan pengawal aplikasi.
Terdapat dua cara anda boleh mendaftarkan middleware di dalam fail app/Http/Kernel.php anda:
Perisian Tengah Global: Perisian tengah ini dijalankan semasa setiap permintaan untuk
permohonan anda.
Route Middleware: Middlewares ini boleh ditugaskan kepada
khusus
laluan.
Untuk mendaftarkan CheckAge middleware kami sebagai perisian tengah laluan, tambahkannya pada tatasusunan $routeMiddleware dalam kernel:
protected $routeMiddleware = [ // Other middleware 'checkAge' => \App\Http\Middleware\CheckAge::class, ];
Kini, anda boleh menggunakan perisian tengah ini pada laluan atau kumpulan laluan anda:
Route::get('admin', function () { // Only accessible if age > 200 })->middleware('checkAge');
Teknik Pertengahan Lanjutan
Perisian tengah dalam Laravel tidak terhad kepada semakan mudah. Berikut ialah beberapa teknik lanjutan untuk memanfaatkan perisian tengah sepenuhnya:
Perisian tengah boleh menerima parameter tambahan. Ini berguna untuk senario di mana gelagat perisian tengah mungkin berubah berdasarkan parameter.
public function handle($request, Closure $next, $role) { if (! $request->user()->hasRole($role)) { // Redirect or abort } return $next($request); }
Anda boleh mengumpulkan berbilang perisian tengah di bawah satu kunci, yang membantu menggunakan set perisian tengah pada banyak laluan.
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // more middleware ], ];
Menggunakan kumpulan perisian tengah pada laluan:
Route::middleware(['web'])->group(function () { Route::get('/', function () { // Uses 'web' middleware group }); Route::get('dashboard', function () { // Uses 'web' middleware group }); });
Perisian tengah boleh mentakrifkan kaedah menamatkan yang akan dipanggil setelah respons dihantar ke penyemak imbas. Ini amat berguna untuk tugasan seperti pengelogan atau analitis.
public function terminate($request, $response) { // Log request and response }
Kesimpulan
Dengan menguasai perisian tengah, anda boleh mencipta aplikasi yang bukan sahaja selamat dan berprestasi tetapi juga boleh diselenggara dan berskala. Sama ada anda mengendalikan pengesahan, pengelogan atau memperhalusi gelagat aplikasi anda dengan parameter tersuai, perisian tengah menyediakan penyelesaian yang bersih dan elegan.
Harap kuasa perisian tengah dalam projek Laravel anda dan lihat cara ia mengubah cara anda mengurus kebimbangan silang. Selamat mengekod!
Atas ialah kandungan terperinci Menguasai Middleware dalam Laravel: Panduan Mendalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!