Внутренняя ошибка сервера [500] при использовании токена персонального доступа для доступа к API laravel

(Это не дубликат Laravel 5.3 Персональный токен доступа 500. Существует проблема с созданием токена, но у меня нет проблем с созданием токена, мой токен просто не принимается при аутентификации)

У меня есть настройки, использующие Laravel / Passport на Apache. Я выполнил процедуру установки в https://laravel.com/docs/5.7/passport#installation а также там я создал смешанное приложение. Часть использует стандартный laravel, а есть сложный компонент, использующий vue + vuex. Моя аутентификация работает следующим образом: я использую стандартную веб-аутентификацию laravel, и при входе в систему я создаю новый токен личного доступа.

Когда компонент vue создан, он успешно извлекает токен, используя:

window.axios.get(`/oauth/personal-access-tokens`)

Когда я запрашиваю API, я передаю токен:

axios.defaults.headers.common['Authorization'] = 'Bearer '+context.rootState.user.token;
axios.defaults.headers.common['Accept'] = 'application/json';
window.axios.get(`/api/userfavs`)...

Полный заголовок

Accept  application/json
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Authorization   Bearer 43c7fbc2b96d67d36749ad6…cf6692eb7d21dbc15d4196c1212bd
Cache-Control   max-age=0
Connection  keep-alive
Cookie  XSRF-TOKEN=eyJpdiI6IkNrNSswZER…jOTA5MTA3ZjMxOTk4NWEifQ%3D%3D
Host    localhost
Referer http://localhost/vegbed/1/edit
User-Agent  Mozilla/5.0 (X11; Ubuntu; Linu…) Gecko/20100101 Firefox/64.0
X-CSRF-TOKEN    tbVdEArmqXzdEGGwwd2eYFnL0gwKs4dW01aSrKz1
X-Requested-With    XMLHttpRequest
X-XSRF-TOKEN    eyJpdiI6IkNr

Маршрут:

Route::get('userfavs/','Api\UserFavController@index')->middleware('auth:api');

Ответ:

SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец «api_token» в «выражении where» (SQL: select * from users где api_token = 43c7fbc2b96d67d36749ad6df2278e4e69d755909dfc2de3400cf6692eb7d21dbc15d4196c1212bd предел 1)

Вот как выглядит мой auth.php:

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],

-1

Решение

laravel использует api_token, если вы пишете токен в guard в вашем config.php,
вам нужно поле api_token в вашей таблице, если вы используете токен в своих API-интерфейсах.

'guards' => [
'web' => [
'driver'   => 'session',
'provider' => 'users',
],

'api' => [
'driver'   => 'token',
'provider' => 'users',
],
]

так что если вы хотите использовать аттестат, измените драйвер в API на аттестат следующим образом:

'guards' => [
'web' => [
'driver'   => 'session',
'provider' => 'users',
],

'api' => [
'driver'   => 'passport',
'provider' => 'users',
],
]

когда он все еще получает ту же ошибку после изменения паспорта, Сначала очистите свое приложение с ремесленником. очистить кэш, настроить и просмотреть..

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]