![](/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.