Laravel 5.3+ 控制器里如何获取登录用户
应该不少同学都遇到这个问题了:5.3 起,由于框架运行流程的修改,你无法在控制器的构造函数里获取登录用户,那么我们怎么办呢?以下是几个方法:
-
不再从构造函数取用户
我们可以从 request 中获取登录用户:
request()->user()
。 -
或者在控制器方法里我们使用
Auth::user()
除了上面的折中的办法,我们一定要在构造函数搞定的话那么请看这里:
protected $user;
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = $request->user();
return $next($request);
});
}
这样你就可以在其它方法里使用 $this->user
来访问当前登录用户了。
本帖已被设为精华帖!
本帖由系统于 7年前 自动加精
原来还能从控制器的构造函数里面获取登录用户。可惜没有机会体验了。
正好被此问题困扰,我都想用Service Container搞Controllers共享$user变量了。
我直接这样写:
``` public function __construct()
{
dd(Auth::user());
}
@Larwas 上面不是说了在 __construct 里拿不到登录信息吗?
@overtrue 噢噢, 我看错了. 谢谢, 那可以在路由设置那里获取么, 设置某个用户才能访问某个路由.