如果我想检查用户是否在我的Laravel 5.1应用程序中登录,我可以使用
if (Auth::user()) {...}
或
if (Auth::check()) {...}
在检查用户是否已登录时,是否有理由优先选择其中一个?
答案 0 :(得分:10)
不,接受的答案是不正确的。
Auth::check()
推荐给Auth::user()
。只要我记得,就一直这样。
换句话说,Auth::check()
调用Auth::user()
,从中获取结果,然后检查用户是否存在。主要区别在于它会检查用户是否为空,以便获得布尔值。
这是检查功能:
public function check()
{
return ! is_null($this->user());
}
如您所见,它调用user()
方法,检查它是否为null,然后返回一个布尔值。
答案 1 :(得分:4)
如果您只是想检查用户是否已登录,AUTH_USER_MODEL
更正确。
Auth::check()
将进行数据库调用(并且稍微重一点),而不是Auth::user()
,这应该只是检查会话。
答案 2 :(得分:0)
我建议您定义$user = auth()->user();
,如果您想检查用户是否已通过身份验证,请在代码中 和用户模型属性,例如电子邮件,姓名,...。
因为auth()->user()
和auth()->check()
都将查询到数据库。如果要提高应用程序速度,请定义$user = auth()->user();
,然后在代码中使用它,也可以检查用户是否通过$user == null;
进行了身份验证。
不要在一个函数或一个代码块中同时使用auth()->check()
和auth()->user()
来减少对数据库的查询,并提高应用程序的速度! ; )
答案 3 :(得分:-1)
Auth::guard('admin')->user()->email
试试这对我有用。