Ошибка токена Django jwt. «Данный токен недопустим для любого типа токена, token_not_valid»

#reactjs #django #axios

#reactjs #django #axios

Вопрос:

Я использую Django Rest Framework для аутентификации и Axios во внешнем интерфейсе. Когда я передаю токен методу axios.get напрямую, он правильно извлекает конечную точку API (getUserInfo), но когда я использую переменную (string) и передаю ее динамически, происходит сбой, и выдается ошибка, описанная выше.

Первый случай: (успешно)

 const config = {
    headers: { Authorization: 'Bearer <token string>' },
  };

  await axios.get(URLS.FETCH_USER, config)
 

Второй случай: (сбой)

 const config = {
    headers: { Authorization:  `Bearer ${accessToken}` },
  };

  await axios.get(URLS.FETCH_USER, config).etc
 

Обратите внимание, что токен является свежим и берется непосредственно из запроса на вход postman.

Комментарии:

1. JSON.stringify добавит кавычки к токену, просто используйте необработанный токен: Bearer ${accessToken}

2. Я на самом деле тоже пробовал, но все равно терпит неудачу

3. Как accessToken определяется и как это выглядит?

4. По сути, это номинальный токен JWT, я анализирую его из асинхронного хранилища, он возвращает правильное значение — я проверяю значение val в postman —

5. Можете ли вы добавить код, в котором вы храните и извлекаете токен, к своему вопросу? Вы проверили переменную, чтобы убедиться, что это правильная строка?

Ответ №1:

Проблема заключалась в том, что токен был строкой внутри дополнительных двух кавычек «». Это и было причиной. Я решил это, проанализировав строку следующим образом:

 const config = {
    headers: { Authorization:  `Bearer ${JSON.parse(accessToken)}` },
  };