Adonis JS не обновляет sh токен, потому что неверный токен - PullRequest
1 голос
/ 01 марта 2020

Я пытаюсь получить новый токен доступа, отправляющий почтовый запрос на сервер. Я использую почтальон для отправки токена refre sh и функции, которая обрабатывает это ниже этого параграфа. Ответ сервера E_INVALID_JWT_REFRESH_TOKEN

async refresh({
    request,
    response,
    auth
  }) {
     try {
      const refresh_token = request.input('refresh_token')
      const decrypted = Encryption.decrypt(refresh_token)
      console.log(decrypted)
      const token = await auth.generateForRefreshToken(refresh_token, true)
      console.log('Token is',token)
      return response.status(200).json(token)
     } catch (error) {
       return response.status(401).json(error)
     }
  }

Как видите, я расшифровал токен, и все в порядке. Также проверьте базу данных и все в порядке.

Видимо, я не единственный, у кого есть эта ошибка, и проблема закрыта в GitHub

ОБНОВЛЕНИЕ:

Это мой config / auth. js

jwt: {
    serializer: 'LucidMongo',
    model: 'App/Models/User',
    scheme: 'jwt',
    uid: 'email',
    password: 'password',
    options: {
      secret: Env.get('APP_KEY'),
      expiresIn: '60m',
    }
  },

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Символ + проблематичен c. Ошибки с этим символом часто встречаются в строке запроса.

Если вы зарегистрируете результат refresh_token, вы можете заметить, что символ + заменен пробелом.

Решения

1. Вы можете использовать библиотеки для преобразования запроса в queryString

Пример с query-string:

var query = queryString.stringify({
  refresh_token:
    "74f7c7e26621d231feb39c4a9c6a76bajOKUVX+J3LG/f4hJQzy3+hgL+p2w0VkRRw6xT/NnVxUofjh/zRVJJyuwGEfoCL+l"
});

Ouput (query):

refresh_token=74f7c7e26621d231feb39c4a9c6a76bajOKUVX%2BJ3LG%2Ff4hJQzy3%2BhgL%2Bp2w0VkRRw6xT%2FNnVxUofjh%2FzRVJJyuwGEfoCL%2Bl

2. Вы можете использовать Request Body

https://en.wikipedia.org/wiki/HTTP_message_body

При этом методе нет необходимости преобразовывать текст

Лучший решение будет зависеть от ваших потребностей.


Интересные ссылки

Как включить специальные символы в строки запроса

Знак плюс в строке запроса

HTTP GET с телом запроса

0 голосов
/ 05 марта 2020

Это зависит от согласованности кодировки символов между клиентом и сервером, к которому вы применяете.

например:

Клиент:

encrypted = toUTF8(Encryption.encrypt(token));

Сервер:

decrypted = Encryption.decrypt(fromUTF8(refresh_token))
...