我有一个中间件在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执行的。
答案 0 :(得分:0)
我认为将中间件添加到组中时必须将中间件放在数组中 - 这将导致它触发并为您提供预期的结果:
Route::group(['prefix' => 'myapi/', 'middleware' => ['api']], function(){
});