2016-04-15 4 views
0

Чтобы уточнить вопрос, следующие утверждения эквивалентны, или я что-то упустил и представил дыру в безопасности?Зачем использовать Auth :: check(), если Auth :: user() получает уже аутентифицированный пользователь или null?

// 1 
if(Auth::user()){ 
    // do something 
} 

// 2 
if(Auth::check() && Auth::user()){ 
    // do something 
} 

ответ

1

Давайте быстро заглянуть под капот

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

Так как вы можете видеть, все, что проверка делает, это проверить нуль. Использование Auth::check() намного проще, когда вам нужно знать, являются ли они auth'd. Было бы бессмысленно возвращать объект, если вы не собираетесь его использовать.

+0

Спасибо за ответ. Что делать, если вы собираетесь использовать объект '$ user'? –

+0

Тогда вы, вероятно, захотите присвоить '$ user = Auth :: user()' или вы можете просто вызвать нужный атрибут, такой как идентификатор пользователя 'Auth :: user() -> id' – Ian

0

заявление Auth :: Check() просто возвращается, если пользователь зарегистрирован или нет.

Auth :: user() возвращает пользователя, который вошел в систему, если он есть.

$user_name = Auth::user()->name; 

и вы можете получить данные пользователя.

+0

Спасибо за ответ, но я спрашивал, были ли выражения if выше эквивалентными. –