Неожиданное поведение от auth ('api') -> user () в Laravel - PullRequest
0 голосов
/ 20 апреля 2020

так что я столкнулся с тем, что выглядит действительно странной проблемой. Я использовал auth ('api') -> user (), чтобы получить коллекцию пользователей в методе модели, используемом различными контроллерами. При настройке API как маршрута publi c с промежуточным программным обеспечением api его контроллер использовал этот метод модели, а код работал только время от времени.

Я вставлю две версии кода ниже.

Эта версия иногда возвращает ноль для $ user, даже если пользователь вошел в систему.

    if(Auth::user()){
        $user = Auth::user();
    }elseif(auth('api')->user()){
        $user = auth('api')->user();
    }else{
        $user = null;
    }

Вторая версия кода, кажется, всегда возвращает коллекцию пользователей для $ user, когда пользователь

    $apiUser = auth('api')->user();

    if(Auth::user()){
        $user = Auth::user();
    }elseif(auth('api')->user()){
        $user = auth('api')->user();
    }else{
        $user = null;
    }

Я не могу понять, почему вторая версия будет работать правильно, а первая - нет. Я только споткнулся о том, что это сработало при попытке отладки кода. Может кто-нибудь попробовать и объяснить!

1 Ответ

0 голосов
/ 20 апреля 2020

Вам необходимо использовать Auth::check(), чтобы проверить, вошел ли пользователь в систему или нет. Таким образом, ваш код будет выглядеть так:

if (Auth::check()) {
   $user = Auth::user();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...