問題描述
檢測到 Laravel 中間件但未執行 (Laravel middleware detected but not executed)
我有一個中間件,當在 Kernel.php 中定義為全局中間件時,它工作正常。但是,我希望它只應用於特定的路由,所以我這樣做:
Route::group(['prefix' => 'myapi/', 'middleware' => 'api'], function(){
});
Calling php artisan route:list
表明中間件被正確檢測到。但是,它沒有被執行(我知道這一點,因為即使故意在文件中放置錯誤也不會做任何事情)。
...
protected $middlewareGroups = [
...
'api' => [
'throttle:60,1',
\App\Http\Middleware\CORSMiddleware::class,
],
];
當中間件設置為全局時,它不會被 路線:列表</代碼>。此外,故意在 routes.php 中指定錯誤的中間件名稱不會引發任何錯誤。
編輯:日誌顯示中間件已針對所有 GET 資源路由執行,但不針對 POST/PUT/DELETE。
參考解法
方法 1:
I believe middleware has to be placed inside an array when adding it to a group ‑ that will cause it to trigger and give you the expected result:
Route::group(['prefix' => 'myapi/', 'middleware' => ['api']], function(){
});
(by user5365075、jayrav13)
參考文件