如果我要檢查用戶是否是我Laravel 5.1應用程序內登錄我既可以使用哪些使用Auth :: check()或Auth :: user() - Laravel 5.1?
if (Auth::user()) {...}
或
if (Auth::check()) {...}
是有原因,如果檢查的時候喜歡一個比其他用戶已登錄?
如果我要檢查用戶是否是我Laravel 5.1應用程序內登錄我既可以使用哪些使用Auth :: check()或Auth :: user() - 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()
方法,檢查它是否爲空,然後返回一個布爾值。
老實說,我不確定。 :)但對我來說,這只是方法背後的意圖。如果我想「檢查」用戶是否登錄,我喜歡寫'Auth :: check()'。我喜歡寫'Auth :: guest()'來檢查用戶是否是訪客。對我來說這比讀'!Auth :: check()'更可讀。如果我想獲取當前登錄的用戶,我喜歡編寫'Auth :: user()'。在這種情況下,你可能會使用'Auth :: user()',因爲PHP是一種動態語言,但我認爲它有助於更加明確。 –
夠公平的,這對我很有用 – tam5
如果您只是想檢查用戶是否登錄,Auth::check()
更正確。
Auth::user()
將進行數據庫調用(並且稍微比Auth::check()
略重),它應該只檢查會話。
Auth::guard('admin')->user()->email
試試這個對我有用。
請看看我的答案。 :) –