昨天我們學了驗證(Validation),確保資料的正確性!
今天,我們來看Middleware —— 它是Laravel 的「請求守門員」~
想像有一個保全站在大樓門口:
在 Laravel 中,Middleware 就是這個保全:
在 app/Http/Kernel.php
可以看到一些內建的:
auth
→ 驗證使用者是否登入guest
→ 只有未登入的訪客才能訪問verified
→ 確認 Email 已驗證throttle
→ 限制請求頻率(防止暴力攻擊)假設我們要做一個「必須是管理員才能進入」的 Middleware:
php artisan make:middleware CheckAdmin
這時會生成 app/Http/Middleware/CheckAdmin.php
public function handle($request, Closure $next)
{
if (auth()->user()?->role !== 'admin') {
return redirect('/')->with('error', '你沒有管理員權限!');
}
return $next($request); // 放行
}
在 app/Http/Kernel.php
的 $routeMiddleware
裡加入:
'admin' => \App\Http\Middleware\CheckAdmin::class,
Route::get('/admin', function () {
return '這是管理員後台';
})->middleware('admin');
你可以把多個 Middleware 放在一組:
Route::middleware(['auth', 'admin'])->group(function () {
Route::get('/admin', function () {
return '管理員後台';
});
Route::get('/admin/settings', function () {
return '後台設定';
});
});
$middleware
)→ 所有請求都會跑$routeMiddleware
)→ 只跑綁定的路由$middlewareGroups
)→ 一次套用多個php artisan make:middleware
建立自訂 MiddlewareKernel.php
註冊後,透過 ->middleware()
使用💡 提示:Middleware 與驗證(Validation)不同