Промежуточное ПО Laravel обнаружено, но не выполняется

У меня есть промежуточное ПО, которое отлично работает, если оно определено как глобальное промежуточное ПО в 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. Кроме того, преднамеренное указание неправильного имени промежуточного программного обеспечения в route.php не вызывает никаких ошибок.

РЕДАКТИРОВАТЬ: Ведение журнала показывает, что промежуточное ПО выполняется для всех маршрутов ресурсов GET, но не для POST/PUT/DELETE.


person user5365075    schedule 10.04.2016    source источник


Ответы (1)


Я считаю, что промежуточное программное обеспечение должно быть помещено внутри массива при добавлении его в группу - это приведет к его срабатыванию и даст ожидаемый результат:

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

});
person jayrav13    schedule 11.04.2016
comment
Допускаются оба синтаксиса, иначе artisan не перечислил бы промежуточное ПО в файле route:list. Но все равно даже с таким синтаксисом не работает :( - person user5365075; 11.04.2016