1

我有一个在 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 执行的。

4

1 回答 1

0

我相信在将中间件添加到组时必须将中间件放置在数组中 - 这将导致它触发并为您提供预期的结果:

Route::group(['prefix' => 'myapi/', 'middleware' => ['api']], function(){

});
于 2016-04-11T03:39:17.520 回答