我有一个在 Kernel.php 中定义为全局中间件时工作正常的中间件。但是,我希望它只应用于特定的路线,所以我这样做:
Route::group(['prefix' => 'myapi/', 'middleware' => 'api'], function(){
});
调用php artisan route:list
显示正确检测到中间件。但是,它没有被执行(我知道这一点,因为即使故意在文件中放置错误也不会做任何事情)。
...
protected $middlewareGroups = [
...
'api' => [
'throttle:60,1',
\App\Http\Middleware\CORSMiddleware::class,
],
];
当中间件设置为全局时,它不会被route:list
. 此外,故意在 routes.php 中指定错误的中间件名称不会引发任何错误。
编辑:记录显示中间件是为所有 GET 资源路由执行的,但不是为 POST/PUT/DELETE 执行的。