Итак, я создал клиента с помощью php artisan passport:client, и когда я делаю POST-запрос к oauth/token, я, к счастью, получаю токен.
Однако, когда я пытаюсь использовать этот токен, помещая его в свои заголовки и переходя на auth:api защищенный маршрут, я получаю 401 неавторизованный.
Однако использование другого маршрута для входа в систему, похоже, работает. Когда я использую этот маршрут в своем контроллере API:
Route::post('/login', 'Auth\LoginController@login')->name('login');
который имеет следующий код:
public function login(Request $request) {
$input = $request->all();
if (Auth::attempt(['email' => $input['email'], 'password' => $input['password'] ])) {
$user = Auth::user();
return [
'success' => true,
'token' => $user->createToken('test')->accessToken
];
}
return [
'success' => false,
'message' => 'unable to authenticate'
];
}
Я получаю обратно токен, который работает на защищенных маршрутах.
Я использую Postman для тестирования, у меня есть заголовки Authorization: Bearer <token> и Accept: application/json. Не уверен, почему это работает так, а не иначе.
edit: Вот защищенный маршрут:
Route::middleware('auth:api')->get('/user', function (Request $request)
{
return $request->user();
});
который использует:
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
я обновил свой вопрос
Вы проверили, существует ли возвращенный токен в базе данных? Кроме того, вы передали пустые области, которые также могут повлиять на вещи.
это так, но я заметил, что столбец user_id имеет значение null для этого токена. однако клиент, который я использую для аутентификации, имеет связанный с ним user_id
Вы только что ответили на свой вопрос, вам нужно выяснить, почему user_id не устанавливается.
это не было проблемой, к сожалению. я вручную установил user_id на что-то в сиквеле про, и я все еще не аутентифицируюсь.
Какой веб-сервер вы используете, apache, nginx или artisan?
апач прямо сейчас
Apache печально известен удалением заголовка Authorization. Вы захотите убедиться, что у вас есть этот заголовок во входящем запросе.






В моем случае удалите компонент Lsapi с сервера WHM и запустите его.
Спасибо за ваш вклад. Пожалуйста, добавьте контекст и объяснение, почему это может работать как решение. Если это имеет смысл, также объясните, как это сделать. Как есть, ваш ответ, вероятно, более полезен в качестве комментария к OP и может не считаться полным и правильным ответом в соответствии с рекомендациями SO. Полезным ответом было бы автономное решение, которое оставляет будущим посетителям дополнительные знания, которые они могут применить в своих ситуациях. Качественные информативные ответы с большей вероятностью будут одобрены, в то время как низкокачественные ответы, скорее всего, будут загружены или вообще удалены.
Что содержит остальная часть вашего
apiпромежуточного программного обеспечения?