【问题标题】:Laravel 5.2 auth functionality doesn't workLaravel 5.2 身份验证功能不起作用
【发布时间】:2026-02-03 22:50:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    简单地使用这个Route::auth();

    【讨论】:

    【解决方案2】:

    不仅Authentication路由需要使用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' => [
        \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。这意味着对于您期望会话数据可用的每个请求(对于 Auth 等),您都需要运行此中间件。

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

    【讨论】: