![](/img/trans.png)
[英]laravel 5.1: Auth::check return false in ServiceProvider
[英]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.