Подтвердить что ты не робот

Паспорт - "Не прошедший проверку". - Laravel 5.3

Я надеюсь, что кто-то может объяснить, почему я unauthenticated, когда уже выполнил успешный процесс проверки подлинности Oauth 2.

Я установил пакет Passport, как в документации Laravel, и я успешно прошел аутентификацию, получил значение токена и так далее. Но, когда я пытаюсь выполнить запрос get, скажем, /api/user, я получаю ошибку unauthenticated в качестве ответа. Я использую значение токена как заголовок с именем ключа Authorization, как описано в документах.

Route::get('/user', function (Request $request) {
    return $request->user();
})->middleware("auth:api");

Эта функция должна возвращать себя как аутентифицированного пользователя, но я получаю только unauthenticated. Аналогично, если я просто верну первый пользователь, я снова получаю unauthenticated.

Route::get('/test', function(Request $request) {
    return App\User::whereId(1)->first();
})->middleware("auth:api");

В учебнике от Laracast, руководствуясь настройкой Passport, у guider не есть ->middleware("auth:api") на своих маршрутах. Но если его там нет, то тогда нет необходимости в аутентификации!

Пожалуйста, любые предложения или ответы более чем приветствуются!

4b9b3361

Ответ 1

Вы должны установить дату истечения срока действия маркеров, которые вы генерируете,

установите метод загрузки в вашем AuthServiceProvider примерно так, как показано ниже, и попробуйте создать новый токен. По умолчанию истечение срока действия паспорта возвращает отрицательное число

public function boot()
{
  $this->registerPolicies();
   Passport::routes();
   Passport::tokensExpireIn(Carbon::now()->addDays(15));
   Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}

Ответ 2

Проверьте свою модель пользователя и таблицу базы данных, если вы изменили имя основного имени поля, чтобы сказать что-то, отличное от "id" или даже "user_id", вы МОЖЕТЕ входить в проблемы. Я отладил проблему изменения поля первичного идентификатора в моей модели пользователя и таблице базы данных, чтобы сказать "acct_id", вместо того, чтобы хранить его как "id", а результат был "Unauthenticated". Когда я попытался получить объект пользователя через GET/user через посредство auth: api middleware. Имейте в виду, что я пробовал все другие исправления под солнцем, пока не решил сам отладить.

ТАКЖЕ Обязательно ОБНОВЛЯЙТЕ свой паспорт. Поскольку в последние недели он внес некоторые изменения.

Я свяжу ссылку на мою ссылку ниже, она ОЧЕНЬ подробно и четко определена относительно того, что я сделал и как я получил решение.

Наслаждайтесь!

https://github.com/laravel/passport/issues/151

Ответ 3

У меня была точно такая же ошибка, потому что я забыл поставить http перед именем проекта.

http missing