2016-04-10 4 views
1

У меня есть промежуточное программное обеспечение, которое отлично работает при определении глобального промежуточного программного обеспечения в Kernel.php. Тем не менее, я хочу, чтобы применяться только к конкретным маршрутам, так что я это сделать:Средство обнаружения Laravel обнаружено, но не выполнено

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 не вызывает никакой ошибки.

EDIT: Ведение журнала показывает, что промежуточное программное обеспечение выполняется для всех маршрутов GET, но не для POST/PUT/DELETE.

ответ

0

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

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

}); 
+0

Оба Синтаксисы позволены, в противном случае ремесленник не будет список промежуточное ПО в «route: list». Но все же даже с этим синтаксисом это не работает :( – user5365075