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

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

У меня есть настройка с использованием laravel / паспорта на 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]: Column not found: 1054 Unknown column 'api_token' in 'where clause' (SQL: select * from users where api_token = 43c7fbc2b96d67d36749ad6df2278e4e69d755909dfc2de3400cf6692eb7d21dbc15d4196c1212bd limit 1)

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

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

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

Покажите нам ошибку Laravel либо из ответа, либо из laravel.log. Это ошибка сервера, код внешнего интерфейса не особо полезен

DevK 12.01.2019 00:45

Возможный дубликат Laravel 5.3 Персональный токен доступа 500

Dharman 12.01.2019 00:47

Я думаю, это не имеет ничего общего с другим вопросом. Я вижу ошибку SQL, точно нет столбца api_token в столбце users, в oauth_access_tokens есть строка api_token. Но я не знаю, зачем он делает этот глупый запрос.

Christian 12.01.2019 00:50

Какую версию Laravel вы используете? Не могли бы вы также включить в свой вопрос содержимое вашего файла config/auth.php?

Rwd 12.01.2019 10:44

Только что обновил вопрос, пользуюсь версией 5.7

Christian 12.01.2019 19:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
1 564
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

laravel используйте api_token, если вы пишете токен in 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',
    ],
  ]

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

Соответственно, у меня был файл auth.php. Я очистил свой laravel с помощью php artisan view: clear php artisan config: cache php artisan cache: clear. Кажется, что 500 больше нет, но аутентификация не работает (401)

Christian 12.01.2019 19:25

Другие вопросы по теме