Laravel 5.2 身份验证功能不起作用


Laravel 5.2 auth functionality doesn't work

我在以前的项目中使用了 laravel 5.1,我没有问题,但现在我安装了 Laravel 5.2,并且遇到了身份验证功能问题所以我使用以下路线

Route::group(['middleware' => ['web']], function () {
  Route::controllers([
    "auth" => "Auth'AuthController",
    "password" => "Auth'PasswordController"
  ]) ;
});

没关系,我可以看到我的身份验证表单,但是当我将表单发送到邮政路由时,/auth/login会话未设置,所以我得到了重定向,但是当我检查我是否登录时Auth::check()我得到了false

不仅身份验证路由需要使用web中间件组;所有需要它提供的功能的路由也需要使用它。

例如

Route::group(['middleware' => ['web']], function () {
    Route::auth();
});
Route::get('example-1', function () {
    dd(Auth::check()); // always will return false
});
Route::group(['middleware' => ['web']], function () {
    Route::get('example-2', function () {
        dd(Auth::check()); // works
    });
});
Web 中间件

组只是为您收集和运行大量中间件。

'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,
],

您会注意到上面的StartSession::class。这意味着对于您希望会话数据可用的每个请求(用于身份验证等),您需要运行此中间件。

通过使用web组,或在所需的路由/路由组上显式调用该中间件。

简单地使用此Route::auth();