Laravel 5.8 и паспорт получают SQLSTATE [42S22]: столбец не найден: 1054 неизвестный столбец 'api_token' - PullRequest
0 голосов
/ 31 октября 2019

Я видел много сообщений об этой ошибке, но ни одно из решений не работает для меня.

Я использую Laravel 5.8 с Passport, который отлично работает на моем сервере разработки. Как и ожидалось, при попытке проверить, прошел ли пользователь аутентификацию на моем сервере разработки, он возвращает перехват (внутри вызова axios):

Сервер разработки

"message":"Unauthenticated."

Однако при запуске того же кода на моем производственном сервере он возвращает перехват:

Производственный сервер:

"message": "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'api_token'
in 'where clause' (SQL: select * from `users` where `api_token` = ...

Я запустил миграцию паспорта и ['guards'] ['api'] ['driver'] установил паспорт в config / auth.php и обновил кеш конфигурации, который, по-видимому, решил проблему для других.

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

EDIT :

Я смог определить, что мой сервер разработки использует класс RequestGuard для поиска пользователя, а мой рабочий сервер использует класс TokenGuard для поиска пользователя.

1 Ответ

0 голосов
/ 02 ноября 2019

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

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

Надеюсь, что это помогает другим.

...