auth()->user() 在 Laravel 5.2 中为空
auth()->user() is null in Laravel 5.2
我刚刚将作曲家更新为 Laravel 5.2,但无法查看受密码保护的页面。基本上下面的代码行不起作用。
auth()->user()
有人可以提出为什么这不起作用吗?
确保任何需要会话(Auth 使用)的路由都在 'web' 中间件组之后。
Route::group(['middleware' => 'web'], function () {
// your routes
});
这是 5.2 的新变化。默认路由没有应用这个中间件堆栈。 Web 中间件组设置会话存储、cookie 和 csrf 保护。
在Laravel 5.2升级中,使用Auth的路由必须在web中间件组中。
我在 app/Http/Kernel.php 中解决了这个问题,将 web 中间件组移动到 全局个中间件。
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
];
希望对其他人有所帮助。但不要忘记查看您使用的 guard
是什么。例如,对于管理员,您可能不会默认守卫,而是创建自己的守卫。不要忘记它。呼叫 \Auth::guard($guard)->user()
对于那些不想盲目地将中间件添加到路由的人,您只需将管理 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
我刚刚将作曲家更新为 Laravel 5.2,但无法查看受密码保护的页面。基本上下面的代码行不起作用。
auth()->user()
有人可以提出为什么这不起作用吗?
确保任何需要会话(Auth 使用)的路由都在 'web' 中间件组之后。
Route::group(['middleware' => 'web'], function () {
// your routes
});
这是 5.2 的新变化。默认路由没有应用这个中间件堆栈。 Web 中间件组设置会话存储、cookie 和 csrf 保护。
在Laravel 5.2升级中,使用Auth的路由必须在web中间件组中。
我在 app/Http/Kernel.php 中解决了这个问题,将 web 中间件组移动到 全局个中间件。
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
];
希望对其他人有所帮助。但不要忘记查看您使用的 guard
是什么。例如,对于管理员,您可能不会默认守卫,而是创建自己的守卫。不要忘记它。呼叫 \Auth::guard($guard)->user()
对于那些不想盲目地将中间件添加到路由的人,您只需将管理 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