Просматривая десятки ответов, я все еще не могу найти решение его проблемы.
Каждый раз, когда я делаю аутентифицированный запрос, ответ {"error":"Unauthenticated."}
Вот маршруты, с которыми я тестировал.
use Illuminate\Http\Request;
use Laravel\Passport\Http\Middleware\CheckClientCredentials;
Route::get('/test', function () {
return 'Hello World';
})->middleware('auth:api');
Route::middleware('auth:api')->get('/test2', function (Request $request) {
return 'Hello World';
});
Я настроил этот проект в соответствии с инструкцией и использовал PHP artisan
Команды для построения моей базы данных. Я тогда начал использовать Почтальон, чтобы проверить это.
Токен получен с использованием grant_type: password
, учетные данные клиента и учетные данные пользователя. "Bearer " . $token
тип затем предоставляется.
Я проверил .htaccess, дату истечения срока действия токена, пространства имен и другие распространенные ошибки. Я установил тестовую функцию для проверки информации моего заголовка. Результаты размещены ниже. По какой-то причине проблема сохраняется. Также нет никаких фактических ошибок … Никаких обновлений error.log, просто ответ от API, сообщающий мне, что пользователь не аутентифицирован.
array:12 [
"cookie" => array:1 [
0 => "XSRF-TOKEN=eyJpdiI6IkwrNGxLOGVtc1M1Y2lYeUMraldTK3c9PSIsInZhbHVlIjoibHRzdVo3bFVJOFhuMDJvZ3RoNEYxK1NsdmhRenZkbmp5b2xuYXVzWTdIUGJ2WGFUbXBiK1JFQ0VNSVlNbjdIbHVmcndmKzBaMzVJbGkxelZFdllhM0E9PSIsIm1hYyI6ImZhMDJjZDIwNDgxMTRkMDdjYTBkYmMwODc4YzQ4ZmM3OGFkZTI3NzY1ZDA5NTAyODhkYjRlNTY1OGUyMTYyNGEifQ%3D%3D; laravel_session=eyJpdiI6Im5hTnVLS3cyc1BzQldudkN2bFNcLzZRPT0iLCJ2YWx1ZSI6IjIwXC8yRkM3Sk4rWkg0ZFFlaG9RYVErc2ZJT0taSHoxOTU3UVpxejdPZ2MzcHBSc2FCd1NweEZwU2kzQXUxZ1VCVmY1dzZIZldFb2J5QXkwMFwvZmpId1E9PSIsIm1hYyI6ImQxZDIzOGQ0NzllOTg4NmZmZDk2NGI1NDNhMzcwNmI1MWE2MzY0YWIzZTgxZjYzOTAxYjhlMWQ1ZTExNzBiMTEifQ%3D%3D"]
"accept-language" => array:1 [
0 => "en-US,en;q=0.8,fr;q=0.6"]
"accept-encoding" => array:1 [
0 => "gzip, deflate, sdch"]
"postman-token" => array:1 [
0 => "864e4343-e8f1-2efd-1a75-11660313ba3d"]
"authorization" => array:1 [
0 => "Bearer 0dea6edd3f655463c4e19cf26ef10755bcfbff5dcdbe44cd44c1d7a84c250c359c65f064737752e6"]
"cache-control" => array:1 [
0 => "no-cache"]
"accept" => array:1 [
0 => "application/json"]
"connection" => array:1 [
0 => "close"]
"x-http-proto" => array:1 [
0 => "HTTP/1.1"]
]
На данный момент, я думаю, что я просто неправильно использую некоторые инструменты. Я надеюсь, что это простая ошибка, но я просто в растерянности относительно того, что это может быть.
(Правка 1) Проблемы с областью: Эй, это может быть проблемой с scope
жетонов?
(Изменить 2) Ошибка SQL Мне удалось найти ошибку, чтобы отработать. Это немного странно, хотя.
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'api_token' in 'where clause' (SQL: select * from `users` where `api_token` = {AccessToken} limit 1)
У меня действительно было несколько проблем с моей программой, но даже после их решения у меня все еще были ошибки.
Моя база данных не была настроена должным образом
Мой «Порядок действий» был выключен. Я продолжал запрашивать токены и настраивать клиентов в неправильном порядке. Я думал о своих клиентах как о пользователях, что неверно и является корнем многих моих проблем.
Я неправильно использовал инструмент в целом. Я никогда не пытался войти в учетную запись пользователя, только клиентская. Это, конечно, не имеет смысла, и именно поэтому я потерпел неудачу.
Поэтому я решил полностью отказаться от использования Passport.
Что если мне все еще нужно получить паспорт?
Поскольку мое решение не требовало, чтобы я работал с паспортом, я могу только вам очень помочь. Когда я наконец понял, как проходить аутентификацию, я понял, что мне это не нужно …
Что если мне не нужен паспорт?
Если вы находитесь в той же лодке, что и я, и на самом деле лучше не использовать Passport, тогда я предлагаю перейти с базовой аутентификацией внутри Laravel. Его легко настроить, и обучение не займет много времени.
Других решений пока нет …