Melaksanakan middleware tersuai:
Middleware Laravel menyediakan mekanisme yang kuat untuk menapis permintaan HTTP memasuki permohonan anda. Mewujudkan middleware tersuai membolehkan anda menyuntik logik anda sendiri ke dalam kitaran hayat permintaan. Inilah panduan langkah demi langkah:
php artisan make:middleware CheckAge
. Ini mewujudkan fail middleware baru dalam app/Http/Middleware/CheckAge.php
.handle
middleware anda, anda akan meletakkan logik tersuai anda. Kaedah ini menerima permintaan ( $request
) dan penutupan ( $next
). Penutupan mewakili middleware seterusnya atau pengendali laluan. Contoh:<code class="php"><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CheckAge { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $request, Closure $next) { if ($request->age </code>
app/Http/Kernel.php
. Tambahkannya ke array $routeMiddleware
:<code class="php">protected $routeMiddleware = [ // ... other middleware ... 'checkage' => \App\Http\Middleware\CheckAge::class, ];</code>
routes/web.php
atau routes/api.php
fail:<code class="php">Route::get('/profile', [ProfileController::class, 'show'])->middleware('checkage');</code>
Melaksanakan penapis tersuai (Nota: Istilah Laravel umumnya menggunakan "middleware" dan bukannya "penapis"):
Walaupun Laravel tidak secara eksplisit menggunakan istilah "penapis" dengan cara yang sama seperti beberapa rangka kerja yang lebih lama, middleware berkesan berfungsi dengan tujuan yang sama. Contoh kod di atas menunjukkan tingkah laku seperti penapis dengan memeriksa umur dan mengalihkannya jika keadaan tidak dipenuhi. Kaedah handle
dalam middleware bertindak sebagai fungsi penapis.
handle
. Ini meningkatkan kesesuaian dan kebolehkerjaan. Laravel menyediakan middleware terbina dalam untuk pengesahan ( auth
) dan kebenaran ( auth.basic
, can
, dan lain-lain). Anda boleh menggunakannya secara langsung atau membuat middleware tersuai untuk melanjutkan atau menyesuaikan logik pengesahan/kebenaran.
Contoh menggunakan middleware terbina dalam:
<code class="php">Route::get('/profile', [ProfileController::class, 'show'])->middleware('auth'); //Requires authentication Route::get('/admin', [AdminController::class, 'index'])->middleware('auth', 'admin'); //Requires authentication and admin role (assuming you have an 'admin' middleware defined)</code>
Contoh Middleware Kebenaran Custom:
<code class="php"><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class CheckAdmin { public function handle(Request $request, Closure $next) { if (Auth::check() && Auth::user()->isAdmin()) { return $next($request); } abort(403, 'Unauthorized'); // Return 403 Forbidden if not an admin } }</code>
Ingat untuk mendaftarkan middleware CheckAdmin
ini dalam fail app/Http/Kernel.php
anda.
try...catch
blok untuk menguruskan ralat dengan anggun.$routeMiddleware
app/Http/Kernel.php
. Kesilapan yang sama adalah melupakan langkah ini, menjadikan middleware tidak berkesan.Atas ialah kandungan terperinci Bagaimana untuk melaksanakan middleware dan penapis tersuai dalam aplikasi Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!