@Artem0071
Безработный mr. Junior

Что не так с laravel passport?

Ситуация:
Есть путь
Route::get('test', 'TestController@index'); // api/test


Так вот, он работает вроде нормально. Проблема возникает когда нужно просмотреть авторизован ли пользователь или нет

То есть, если я сейчас напишу в TestController'e Auth::user() - он выведет null, хотя токен передан и он валиден

Но при этом если я сделаю следующее:
Route::get('test', 'TestController@index')->middleware(['auth:api']);


То, Auth::user() выведет пользователя..
Но мне нужно попасть в TestController и как зарегистрированный пользователь, и как незарегистрированный (от этого зависит как будут выводиться данные). Но получается либо так, либо никак

Как это починить?
Версия 5.6

====================================
Причем:
return $this->setData([
            'user' => Auth::user(), // null
            'token' => $request->bearerToken() // а тут выводит токен
]);

Т.е. токен явно добирается до laravel, но он его не обрабатывает если отсутствует проверка авторизации
  • Вопрос задан
  • 371 просмотр
Пригласить эксперта
Ответы на вопрос 1
@iljaGolubev
В config/auth.php так?
'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

Если в роуте не определён используемый guard, то используется дефолтный.
Решений можно придумать много...
Попробуйте auth()->guard('api')->user(), например.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы