中介軟體是什麼
中介軟體是檢查、過濾進入應用程式的 HTTP 請求的機制。 可在請求傳到控制器前後插入處理。 例如 Laravel 內建的認證中介軟體: 若使用者未認證則導向登入畫面;若已認證則將請求傳到應用程式內部。 除了認證,也可為日誌記錄、CSRF 保護、速率限制等各種用途建立中介軟體。Laravel 13 的 CSRF 保護詳細請參閱 CSRF 保護。使用者定義的中介軟體通常放在
app/Http/Middleware 目錄。內建中介軟體
Laravel 預設提供web 與 api 兩個中介軟體群組。
routes/web.php 會自動套用 web 群組,routes/api.php 會自動套用 api 群組。
此外,常用中介軟體有預設別名,可以用簡短名稱參照。
建立中介軟體
以make:middleware Artisan 指令建立新的中介軟體。
app/Http/Middleware/EnsureTokenIsValid.php。
在 handle 方法中撰寫處理請求的邏輯。
$next($request) 會把請求傳給後續處理。
若不符條件則以 redirect 或回應中止請求。
請求前後的處理
中介軟體可在請求的前或後執行處理。註冊中介軟體
全域中介軟體
若要對所有請求執行中介軟體,可在bootstrap/app.php 的 withMiddleware 中將它加入全域堆疊。
append 會加到堆疊末端。若要加到最前面請用 prepend。
套用中介軟體到路由
若要只對特定路由套用中介軟體,可在路由定義呼叫middleware 方法。
withoutMiddleware。
中介軟體別名
可為冗長的類別名稱定義短別名,於bootstrap/app.php 設定:
中介軟體群組
將多個中介軟體以一個 key 集合,可讓路由套用更方便。 在bootstrap/app.php 用 appendToGroup 或 prependToGroup:
web 或 api 群組,可使用專用方法:
中介軟體參數
中介軟體可接收額外參數。 於handle 方法的 $next 之後加上參數即可。
: 分隔中介軟體名稱與參數:
實例:認證檢查中介軟體
簡單的把未登入使用者導向登入頁的範例:下一步
HTTP 請求
學習如何在控制器中取得請求資料。