繁体   English   中英

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

[英]Which to use Auth::check() or Auth::user() - Laravel 5.1?

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

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

要么

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

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

不,接受的答案是不正确的。

Auth::check()遵循Auth::user() 只要我记得,就一直这样。

换句话说, Auth::check()调用Auth::user() ,从中获取结果,然后检查用户是否存在。 主要区别在于它检查用户是否为空,以便获得布尔值。

这是检查功能:

public function check()
{
    return ! is_null($this->user());
}

如您所见,它调用user()方法,检查它是否为null,然后返回一个布尔值。

如果您只想检查用户是否已登录,则Auth::check()更正确。

Auth::user()将进行数据库调用(并且稍微重一点Auth::check() ,而不是Auth::check() ,它应该只检查会话。

Auth::guard('admin')->user()->email 

试试这个对我有用。

我建议你定义$user = auth()->user(); 如果要检查用户是否已通过身份验证, 并且在代码中检查用户模型属性(如电子邮件,名称,...)。

因为auth()->user()auth()->check()都会查询到数据库。 如果您想在应用中获得更高的速度,请定义$user = auth()->user(); 然后你可以在你的代码中使用它,你也可以检查用户是否通过$user == null;身份验证$user == null;

不要在一个函数或一个代码块中使用auth()->check()auth()->user()来对数据库和更快速的应用程序进行低查询! ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM