簡體   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