Я получил Token Signature, не может быть проверен с внешним API и внутренними запросами в моем приложении - PullRequest
0 голосов
/ 25 сентября 2019

В приложении 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.

Запрос входа во внешний API возвращает только маркер, и ясохраните его в методе setAuthorizationToken выше.Далее мне нужно прочитать информацию о пользователе из этого внешнего API и сохранить его в хранилище vuex.Я делаю это, и это работает нормально, но проблема в том, что мой следующий аксиос запрос к моему элементу управления для чтения данных из триггеров БД: ошибка:

Подпись токена не может быть проверена.

Я понимаю, почему, но есть ли способ это исправить?Можно ли заменить Bearer для axios, когда мне это нужно?Может быть, какая-то замена аксиумов, чтобы использовать и аксиосы, и замену?

"laravel/framework": "5.8.*",
"tymon/jwt-auth": "^1.0.0",


"vue": "^2.5.17",
"axios": "^0.18",
"vuex": "^3.1.0"

Спасибо!

MODIFIED :

Поиск решения при входе в системуМне нужен токен, который я получил в файле 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.Если есть способ исправить эту ошибку и запустить запрос?

MODIFIED # 2:

Администратор моего сервера использовал эту опцию https://support.cloudways.com/enable-cors-headers/ и включилCORS заголовки и перезапускает Debian, но я все еще получаю ошибки CORS.Есть идеи, как решить проблему?

1 Ответ

1 голос
/ 25 сентября 2019

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

...