В настоящее время у меня есть 2 сервера: 1 бэкэнд / API-сервер Laravel, 1 интерфейсный сервер, на котором работает Vue SPA.
Проблема, с которой я столкнулся, - это проблема аутентификации. Из моего приложения Vue я могу успешно войти в систему через аутентификацию API, используя предоставление пароля.
Запрос axios попадет в конечную точку аутентификации, которая:
$response = $http->post(env('APP_URL').'/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $credentials['email'],
'password' => $credentials['password'],
'scope' => '',
],
]);
Взамен я получаю токены, которые храню в localStorage. На более позднем этапе в моем приложении Vue я пытаюсь сделать еще один запрос API для этого вошедшего в систему пользователя, используя токены, которые я получил от предоставления пароля.
let config = {
headers: {'Authorization': "Bearer " + state.tokens.access_token}
};
window.axios.post('/purchases', {
form: state.form,
}, config)
.then(function (response) {
console.info(response);
})
.catch(function (error) {
console.info(error.response);
});
Но я получаю ошибку 401
Error: "Unauthenticated."
Я предполагал, что промежуточное ПО auth:api будет анализировать токен доступа для пользователя, но, похоже, это не так.
Как я могу разобрать пользователя, что после срабатывания моей конечной точки /purchases я могу получить доступ к пользователю $request->user()?
@chris вы vuex, если да. при каждом обновлении вашего хранилища уничтожайте вместо vuex сохраняйте его в localstorage, это не создает никаких проблем с безопасностью, но помните, что после входа в систему или закрытия браузера очистите эту вещь
@MuhammadNauman Да, он настроен правильно.






привет Крис, есть 2 пути
способ 1
router.beforeEach((to, from, next) => {
axios.defaults.headers.common['authorization'] =store.state.userStore.authUser //this is globaly defind header
//put your login over here
}
});
в этом я устанавливаю заголовок axios при каждом запросе
способ 2
передайте свой токен в свой URL-адрес примерно так Предположим, вы URL-адрес типа localhost / laravel / public / api / anyname? access_token = '+ localstoragevalue
Спасибо! Не поймите меня неправильно, у меня нет проблем с передачей токена в заголовке. Проблема, с которой я столкнулся, заключается в том, чтобы получить от него пользователя.
@Chris сохраняет токен, а также идентификатор пользователя в другую таблицу после входа в систему, т.е. код записи в контроллере входа, а другой метод заключается в создании дополнительного столбца в таблице пользователей (столбец токена), и этот процесс будет выполняться в обоих методах создания промежуточного программного обеспечения, чтобы проверить, какой пользователь его принадлежит, например: -find, где токен, это токен запроса, если он найден, заставьте его войти в систему, иначе перенаправить на домашнюю страницу, после этого все будет оставаться таким же, как обычный вход без токена
Проверить заголовок запроса, правильно ли установлен токен?