Создание приложения с помощью Laravel, Passport и Vue. Этот вопрос не имеет прямого отношения к входу в систему с помощью oAuth2, а скорее к использованию api, защищенного Passport, с вашим собственным кодом javascript, как согласно документации.
При доступе к домашней странице и использовании axios для получения /oauth
я получаю ошибку 401, как и ожидалось.
После входа в систему с использованием логина по умолчанию, предоставленного laravel (использует web
auth), я могу вернуться на домашнюю страницу, и запрос axios для /oauth
отлично работает; например, /oauth/clients
, как и ожидалось, возвращает клиентов вошедшего в систему пользователя.
mounted() {
//works as expected: 401 when logged out and response when logged in via /login
axios.get('/oauth/clients')
.then(response => {
console.log(response.data)
})
//Always returns 400 error
axios.get('/api/user')
.then(response => {
console.log(response.data)
})
}
Однако, когда я пытаюсь с помощью axios получить /api/user
, я получаю ошибку 400 с сообщением Unauthenticated (независимо от того, была ли такая же ошибка до или после входа в систему).
//Returns a 400, always
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Если я прав, тот факт, что /oauth
маршруты работают, доказывает, что laravel_token, csrf и любые подобные вещи отправляются правильно. Поэтому я думаю, что это проблема на стороне сервера, особенно с auth: api guard. В файле конфигурации auth я настроил его на использование Passport и выполнил все документы.
Я не понимаю, почему я получаю ошибку 400, а не 401 при вызове api, и почему он вообще не аутентифицируется.
Особенно неприятно, так как согласно этому видео ( 11:30), это в значительной степени plug 'n' play.
Такое же поведение с почтальоном.
В: Есть ли решения этой ошибки?
Полный код на GitHub.