Laravel 5.2 引入了中间件组 https://laravel.com/docs/5.2/middleware#middleware-groups概念:可以指定一个或多个中间件属于一个组,并且可以将一个中间件组应用于一个或多个路由
默认情况下 Laravel 5.2 定义了一个名为web
,用于对中间件处理会话和其他 http 实用程序进行分组:
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,
],
So, 如果你想要会话处理,你应该使用这个中间件组对于要使用身份验证的所有路由:
Route::group( [ 'middleware' => ['web'] ], function ()
{
//this route will use the middleware of the 'web' group, so session and auth will work here
Route::get('/', function () {
dd( Auth::user() );
});
});
Laravel 版本更新 >= 5.2.27
从 Laravel 开始5.2.27
版本中定义的所有路由routes.php
默认情况下使用web
中间件组。这是在app/Providers/RouteServiceProvider.php
:
protected function mapWebRoutes(Router $router)
{
$router->group([
'namespace' => $this->namespace, 'middleware' => 'web'
], function ($router) {
require app_path('Http/routes.php');
});
}
所以你不再需要手动添加web
中间件组到您的路线。
不管怎样,如果你想对路由使用默认认证,你仍然需要绑定auth
路由的中间件