У меня нет возможности проверить подпись токена с помощью внешнего API и внутренних запросов в моем приложении.

В приложении 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. Есть идеи, как решить проблему?


person mstdmstd    schedule 25.09.2019    source источник


Ответы (1)


Из вопроса я могу понять, что у вас есть внешний API и внутренний API, которые используют разные токены. Поэтому вместо установки токена после SignUp / SignIn вы можете установить токен в cookie после SignUp / SignIn. Для внешнего токена вы можете назвать его как external_token, а для внутреннего вы можете установить как token в файле cookie. Теперь всякий раз, когда вы запускаете вызов axios, вы заранее знаете, является ли API внешним или внутренним, и на основе этого вы устанавливаете токен только для этого вызова API, а не устанавливаете заголовок авторизации по умолчанию.

person Mohit Tilwani    schedule 25.09.2019
comment
Не могли бы вы дать ссылку как на токен в cookie после SignUp / SignIn? Здесь нужно использовать какие-то библиотеки / чистый JS? - person mstdmstd; 25.09.2019
comment
Просто найдите, чтобы сохранить токен в cookie. Вам не обязательно использовать здесь какую-либо библиотеку JS. - person Mohit Tilwani; 25.09.2019
comment
Посмотрите, пожалуйста, на МОДИФИЦИРОВАННЫЙ блок - person mstdmstd; 26.09.2019
comment
Пожалуйста, посмотрите МОДИФИЦИРОВАННОЕ №2 - person mstdmstd; 26.09.2019
comment
Извините, нет решения? - person mstdmstd; 27.09.2019