Паспорт - "Не прошедший проверку". - 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")
на своих маршрутах. Но если его там нет, то тогда нет необходимости в аутентификации!
Пожалуйста, любые предложения или ответы более чем приветствуются!
Ответы
Ответ 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]()