2015-11-02 93 views

回答

6

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

Auth::check()推遲到Auth::user()。只要我記得,就是這樣。

換句話說,Auth::check()調用Auth::user(),從中獲取結果,然後檢查用戶是否存在。主要區別在於它會檢查用戶是否爲空,以便獲得布爾值。

這是檢查功能:

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

正如你所看到的,它會調用user()方法,檢查它是否爲空,然後返回一個布爾值。

+1

老實說,我不確定。 :)但對我來說,這只是方法背後的意圖。如果我想「檢查」用戶是否登錄,我喜歡寫'Auth :: check()'。我喜歡寫'Auth :: guest()'來檢查用戶是否是訪客。對我來說這比讀'!Auth :: check()'更可讀。如果我想獲取當前登錄的用戶,我喜歡編寫'Auth :: user()'。在這種情況下,你可能會使用'Auth :: user()',因爲PHP是一種動態語言,但我認爲它有助於更​​加明確。 –

+0

夠公平的,這對我很有用 – tam5

3

如果您只是想檢查用戶是否登錄,Auth::check()更正確。

Auth::user()將進行數據庫調用(並且稍微比Auth::check()略重),它應該只檢查會話。

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

試試這個對我有用。