2015-11-02 11 views
6

Jeśli chcę sprawdzić, czy użytkownik jest zalogowany w moim wniosku laravel 5,1 mogę użyćKtórego użyć Auth :: check() lub Auth :: user() - Laravel 5.1?

if (Auth::user()) {...} 

lub

if (Auth::check()) {...} 

czy istnieje powód, aby preferować jeden nad drugim, gdy sprawdzenie czy użytkownik jest zalogowany?

+0

Proszę spojrzeć na moją odpowiedź. :) –

Odpowiedz

6

Nie, zaakceptowana odpowiedź jest nieprawidłowa.

Auth::check() odsyła do Auth::user(). Tak było, odkąd pamiętam.

Innymi słowy, Auth::check() dzwoni pod numer Auth::user(), otrzymuje wynik, a następnie sprawdza, czy użytkownik istnieje. Główną różnicą jest to, że sprawdza, czy użytkownik jest null dla ciebie, aby uzyskać wartość boolean.

Jest to funkcja check:

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

Jak widać, wywołuje user() metoda, sprawdza, czy jest to null, a następnie zwraca wartość logiczną.

+1

Szczerze mówiąc, nie jestem pewien. :) Ale dla mnie to tylko intencje stojące za metodami. Lubię pisać 'Auth :: check()', jeśli chcę "sprawdzić", jeśli użytkownik jest zalogowany. Lubię pisać 'Auth :: guest()', aby sprawdzić, czy użytkownik jest gościem. Jest to nieco bardziej czytelne niż "! Auth :: check()". Lubię pisać 'Auth :: user()', jeśli chcę uzyskać aktualnie zalogowanego użytkownika. Prawdopodobnie możesz uciec z 'Auth :: user()' w tym przypadku, ponieważ PHP jest językiem dynamicznym, ale myślę, że pomaga to być bardziej precyzyjnym. –

+0

Wystarczająco fair, to działa dla mnie – tam5

3

Jeśli chcesz tylko sprawdzić, czy użytkownik jest zalogowany, Auth::check() jest bardziej poprawny.

Auth::user() wykona połączenie z bazą danych (i będzie nieco cięższe) niż Auth::check(), które powinno po prostu sprawdzić sesję.

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

Wypróbuj to dla mnie.