哪个使用Auth :: check()或Auth :: user() - Laravel 5.1?

时间:2015-11-02 17:34:20

标签: php laravel authentication laravel-5.1

如果我想检查用户是否在我的Laravel 5.1应用程序中登录,我可以使用

if (Auth::user()) {...}

if (Auth::check()) {...}

在检查用户是否已登录时,是否有理由优先选择其中一个?

4 个答案:

答案 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 

试试这对我有用。