Auth::user() returns Laravel 5.2 中为空

Auth::user() returns null in Laravel 5.2

我搜索并找到了如下各种结果:

但是,我的还是不行。

Auth::user() 在控制器中有效,但在模型中无效。它returns null.

密码是:

public function scopeOwned($query) {
    $query->where('user_id', '=', Auth::user()->id);
}

我试过 dd(Auth::user()) 也试过 returns null

有什么想法吗?

我和Laravel 5.2有类似的问题,尝试把Auth::user()->id改成Auth::id()

public function scopeOwned($query) {
    $query->where('user_id', '=', Auth::id());
}

对我有用!

谢谢大家

这里解决的问题: https://laracasts.com/discuss/channels/laravel/authuser-returns-null-in-laravel-52

我不得不直接将堆栈添加到中间件中(而不是在组中)。

在 /Http/kernel.php:

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
];

我遇到了类似的问题。我正在为 API 组定义自定义中间件,而 Auth 始终显示为 null。

我通过在自定义中间件之前加载 EncryptCookies 中间件来修复此问题。

'api' => [
    \App\Http\Middleware\EncryptCookies::class,
    \App\Http\Middleware\VerifyParametersMiddleware::class, // your custom middleware, load after EncryptCookies
    'throttle:60,1',
    'bindings',
],

此更改可在 Kernel.php 内完成。

从接受的答案链接到的 same discussion 中,我发现以下解决方案有效。编辑您的 /routes/web.php 文件并用 Route::group('middleware' => 'web']) 包围您现有的路线,如下所示:

Route::group(['middleware' => 'web'], function () {

    Auth::routes();

    // The rest of your routes

});

据我所知,这不会有任何安全或其他影响,因为它只是在处理包含的路由之前加载 web 中间件。如果有人知道安全性或其他问题/后果,请 post 他们在此答案的评论中。