【问题标题】:auth()->user() is null in Laravel 5.2auth()->user() 在 Laravel 5.2 中为空
【发布时间】:2016-04-02 22:10:42
【问题描述】:

我只是将作曲家更新到 Laravel 5.2,但无法查看受密码保护的页面。基本上下面的代码行不工作。

auth()->user() 

有人可以建议为什么这不起作用吗?

【问题讨论】:

  • 您是否使用以下内容更新了您的 config/auth.php 配置文件:github.com/laravel/laravel/blob/develop/config/auth.php ?
  • 是的,唯一的变化是:'model' => App\Models\User\User_Model::class, 而不是model' => App\User::class,
  • 当您尝试对用户进行身份验证时,attempt()(或 login() 或您正在使用的任何东西)返回什么?
  • Auth::user()handleUserWasAuthenticated 方法中不为空Trait AuthenticatesUsers

标签: php laravel laravel-5.1 laravel-5.2


【解决方案1】:

确保所有需要会话(Auth 使用)的路由位于 'web' 中间件组之后。

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

这是 5.2 的新变化。默认情况下,路由没有应用此中间件堆栈。 Web 中间件组设置会话存储、cookie 和 csrf 保护。

【讨论】:

  • 很好的答案。我已经升级到 5.2,但我的包控制器突然无法找到经过身份验证的用户。
【解决方案2】:

在 Laravel 5.2 升级中,使用 Auth 的路由必须在 web 中间件组中。

我在 app/Http/Kernel.phpweb 中间件组移动到 global 中间件中解决了这个问题。

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \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
];

【讨论】:

  • 我在 5.3.6 中遇到了同样的问题,您的建议解决了我的问题。谢谢。 +1
【解决方案3】:

希望它会帮助别人。但是不要忘记查看您使用的guard 是什么。例如,对于管理员,您可能不会默认守卫,而是创建自己的守卫。不要忘记它。拨打\Auth::guard($guard)->user()

【讨论】:

    【解决方案4】:

    对于那些不想盲目地将中间件添加到路由的人,您只需将管理 cookie 和会话的类添加到相关的中间件组(在我的情况下为api)。对我来说,那些课程:

    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Session\Middleware\StartSession::class,
    

    这就是我的 App\Http\Kernel::$middleWare 变量最终的样子:

    protected $middlewareGroups = [
        'web' => [
            ...
        ],
    
        'api' => [
            'throttle:60,1',
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \Illuminate\Auth\Middleware\Authenticate::class
        ],
    ];
    

    使用 Laravel 5.3

    【讨论】:

      猜你喜欢
      • 2016-05-13
      • 1970-01-01
      • 2017-03-29
      • 2016-08-11
      • 2017-03-17
      • 2018-08-11
      • 2021-07-29
      • 2016-05-23
      • 1970-01-01
      相关资源
      最近更新 更多