Laravel 中的中介層(Middleware)用於處理 HTTP 請求在進入您的應用程序之前或之後的不同階段。它允許您在請求和回應之間執行自定義代碼,並可用於各種用途,例如身份驗證、授權、日誌記錄、輸入驗證等。中介層是 Laravel 應用程序的重要組成部分,它有助於保持代碼的結構性和可維護性。
以下是 Laravel 中使用中介層的一些常見用途:
中介層通常以中介層類或中介層函數的形式定義,並且可以在路由或控制器中使用。它們允許您在請求處理的不同階段插入自定義邏輯,以確保您的應用程序正確、安全地運行。
前面我們已經有看過CSRF的功能了,今天來自己寫一個簡易的Middleware
功能是在收到請求及回應時紀錄Log
php artisan make:middleware {你的Middlware名稱}
依照其他Middleware,不用在檔案後加上Middleware,所以這裡命名為RequestResponseLogger
app\Http\Middleware\RequestResponseLogger.php
// 在處理請求之前,記錄傳入請求的信息
Log::info('Request:', [$request]);
// 傳遞請求給下一個中介軟體
$response = $next($request);
// 在回傳響應之前,記錄回傳響應的信息
Log::info('Response:', [$response]);
return $response;
app\Http\Kernel.php
\App\Http\Middleware\RequestResponseLogger::class,
如果要每一個Request都經過這個Middlware,那就放在**$middleware**這個Array中(如上圖)
另外也可以定義Middleware名稱,在想要經過的Request中加入,如下
app\Http\Kernel.php
(如果上面已經加入到$middleware,這裡記得先把$middleware裡面的註解)
routes\web.php
這時候在進入/posts頁面時,就可以紀錄log了
log位置預設在
storage\logs\laravel.log
筆者在寫這篇時,有發現這個有趣的Middleware
如果在終端上打:
php artisan down
整個網站都會進入維護模式,出現503 SERVICE UNAVAILABLE
這時候輸入
php artisan up
就能恢復囉
先前提到的流程大概是
使用者→View→Controller→Model
如果加入Middleware,大概會是
使用者→Middleware→View→Middleware→Controller→Model
如果以先前餐廳的舉例,就是在收到顧客訂單前
先檢查是否可接受這個訂單
如果是維護模式,就代表餐廳正在裝修XD
是不是有趣許多、有沒有更清楚Middleware的定義呢