В приложении Laravel 5.8 / vuejs / vuex / mysql я использую jwt-auth, и когда я вхожу в систему (стандартная аутентификация с таблицей пользователей mysql), я использую метод:
export function setAuthorizationToken(token) {
axios.defaults.headers.common["Authorization"] = `Bearer ${token}`
}
и это сработало нормально.
Затем мне нужно переделать SignUp / SignIn, чтобы использовать внешний API для операций SignUp / SignIn. Итак, моему приложению необходимо выполнить SignUp / SignIn с внешним API, но также у меня есть запросы на элементы управления моего приложения для чтения / записи данных из / в мой sql.
Запрос SignIn к внешнему API возвращает только токен, и я сохраняю его в методе setAuthorizationToken выше. Затем мне нужно прочитать данные пользователя из этого внешнего API и сохранить их в магазине vuex. Я делаю это, и он работает нормально, но проблема в том, что мой следующий запрос axios к моему элементу управления для чтения данных из триггеров db вызывает ошибку:
Подпись токена не может быть проверена.
Я понимаю почему, но есть ли способ исправить? Можно ли при необходимости заменить Bearer на axios? Может быть, какая-то замена аксиомов, чтобы использовать как аксиомы, так и замену?
"laravel/framework": "5.8.*",
"tymon/jwt-auth": "^1.0.0",
"vue": "^2.5.17",
"axios": "^0.18",
"vuex": "^3.1.0"
Спасибо!
ИЗМЕНЕНО:
В поисках решения о входе в систему мне нужен токен, который я получил в cookie 'external_token'
const headers = {
'Content-Type': 'application/json',
'X-Auth-Token': getCookie('external_token'),
'Access-Control-Allow-Origin' : '*',
"Access-Control-Allow-Methods": "GET",
};
axios.get(user_details_url, headers)
.then((response) => {
...
})
.catch((err) =>{
})
Но в консоли появилась ошибка:
Access to XMLHttpRequest at 'http://remoteserver.com/api/user' from origin 'http://local-wiznext.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
где remoteserver.com - это удаленный сервер с API, а http://local-wiznext.com - мой локальный сервер. развиваюсь в
В поисках решения я нашел несколько дополнительных параметров, которые нужно добавить в заголовок моего запроса axios:
const headers = {
'Content-Type': 'application/json',
'X-Auth-Token': getCookie('external_token'),
'Access-Control-Allow-Origin' : '*',
"Access-Control-Allow-Methods": "GET",
'crossDomain': true,
'dataType': 'jsonp',
};
// axios.get(url, {headers})
Но у меня такая же ошибка CORS. Есть ли способ исправить эту ошибку и запустить запрос?
ИЗМЕНЕНО №2:
Администратор моего сервера использовал эту опцию https://support.cloudways.com/enable-cors-headers/ и включил заголовки CORS и перезапустил debian, но я все еще получаю ошибки CORS. Есть идеи, как решить проблему?