Ax ios Авторизация не работает - VueJS + Django - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь создать приложение, используя VueJS и Django. Я также использую библиотеку Graphene- Django, поскольку в проекте используется GraphQL.

Теперь аутентификация работает нормально, и я получаю токен JWT. Но когда я использую токен для других запросов, требующих аутентификации, я получаю эту ошибку в Vue:

"Error decoding signature"

, а журнал Django также возвращает это:

graphql.error.located_error.GraphQLLocatedError: Error decoding signature

jwt.exceptions.DecodeError: Not enough segments

ValueError: not enough values to unpack (expected 2, got 1)

странно то, что тот же самый запрос при выполнении в Postman просто отлично работает.

Как я уже упоминал в заголовке, используйте Ax ios для моих запросов, вот пример запроса:

axios({
  method: "POST",
  headers: { Authorization: "JWT " + localStorage.getItem("token") },
  data: {
    query: `{
        dailyAppoint (today: "${today}") {
            id
            dateTime
        }
     }`
    }
});

Примечание: он использует «JWT», а не «Bearer», потому что «Bearer» почему-то не работает для меня.

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Хорошо, пара вопросов, работает ли API без Vue. js от curl. Сгенерируйте токен, проверьте API из curl.

Если это так, проверьте заголовки, отправленные из запроса от Network Inspector, mozilla dev tools / chrome devtools. И обновите ваш пост этими RAW-заголовками.

Эта конкретная ошибка возникает, когда ваш ключ publi c не может декодировать строку [token], подписанную вашим закрытым ключом. Что в конечном итоге означает, что токен доступа был подделан. Это также может означать, что вы отправляете значения типа «unkown» - JS ошибка инициализации состояния.

Проверьте RAW-заголовки запроса. Это поможет.

0 голосов
/ 13 апреля 2020

Используйте перехватчик запросов для установки заголовка авторизации:

axios.interceptors.request.use(config => {
   if (localStorage.getItem("token") != null)
     config.headers["Authorization"] = "JWT " + localStorage.getItem("token");
   return config;
 });
...