2016-07-20 6 views
0

Недавно я начал новый проект laravel и понял, что группа промежуточного программного обеспечения в сети route.php ушла.Laravel 5.2 web middleware group в routes.php отсутствует

Он по-прежнему кажется, использовать его, хотя - Therfore я хотел бы спросить, где он настроен, так как он не указан в Kernel.php как значение по умолчанию промежуточного

protected $middleware = [ 
     \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
     \GeneaLabs\LaravelCaffeine\Http\Middleware\LaravelCaffeineDripMiddleware::class, 
]; 

Я на самом деле спрашиваю, потому что я хотите создать additinal api для моего приложения, и поэтому я бы хотел, чтобы не использовал веб-промежуточное программное обеспечение.

ответ

0

Где вы ищете? По умолчанию Kernel.php они все еще есть:

/** 
* The application's global HTTP middleware stack. 
* 
* These middleware are run during every request to your application. 
* 
* @var array 
*/ 
protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
]; 

/** 
* The application's route middleware groups. 
* 
* @var array 
*/ 
protected $middlewareGroups = [ 
    'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \App\Http\Middleware\VerifyCsrfToken::class, 
    ], 

    'api' => [ 
     'throttle:60,1', 
    ], 
]; 

Затем в routes даже по умолчанию web не там, а затем положить его.

Route::group(['middleware' => ['web']],function(){ 
     //your routes ... 
}); 

Или, если вы не хотите, сеанс в вашей апи конечной точки:

Route::group(['middleware' => ['api']],function(){ 
     //your routes ... 
}); 
+0

Не могу подтвердить это. У меня нет промежуточного программного обеспечения Route :: group в моих маршрутах.php, но все равно получаю TokenMismatchException, если я добавляю свой токен - поэтому кажется, что веб-промежуточное программное обеспечение прикреплено без фактического прикрепления к нему –

+0

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

+0

Да, по умолчанию в route.php нет группы маршрутов, поэтому вам нужно добавить middlewares как на ваш вкус. Если вам не нужны сеансы и т. Д., Просто добавьте значение «api» промежуточного программного обеспечения и ваше добро! – jsd

0

Я на самом деле нашел ответ мой сам. Корень этого поведения находится в RouteServiceProvider, где функция карты применяет промежуточное программное обеспечение.

/** 
* Define the routes for the application. 
* 
* @param \Illuminate\Routing\Router $router 
* @return void 
*/ 
public function map(Router $router) 
{ 
    $this->mapWebRoutes($router); 

    // 
} 

/** 
* Define the "web" routes for the application. 
* 
* These routes all receive session state, CSRF protection, etc. 
* 
* @param \Illuminate\Routing\Router $router 
* @return void 
*/ 
protected function mapWebRoutes(Router $router) 
{ 
    $router->group([ 
     'namespace' => $this->namespace, 'middleware' => 'web', 
    ], function ($router) { 
     require app_path('Http/routes.php'); 
    }); 
} 
+0

Это дало мне головную боль в течение нескольких часов раньше. Мне действительно не нравится это решение. – vfsoraki

+0

Я действительно как-то помнил, что он был представлен в ларакасте, но не помнил, где :) - Мне очень нравится, так как вы очищаете свои маршруты.php и теперь просто создаете что-то вроде route-api.php и ссылаетесь на него в mapWebRoutes. Не нужно смешивать api Маршруты с маршрутами приложений в одном файле –