как обновить токен по истечении срока действия в jwt - PullRequest
0 голосов
/ 06 сентября 2018

Я внедряю JWT в моем проекте. Я реализовал JWT и дал ему время истечения 1 минуты. JWT, который генерируется со стороны API, во время входа в систему, а токен и данные об истечении срока отправляются в результате и хранятся в локальном хранилище. Как я могу обновить токен с истекшим сроком действия со стороны API и отправить его обратно клиенту, чтобы он мог храниться в локальном хранилище и отправляться для каждого вызова с использованием перехватчика?

так я создал jwt и дал время истечения

// let us suppose this is my input
tokenObject = { User: { username: name, pwd: pwd } };
//creating a jwt here
jwt.sign({ tokenObject }, "secretkey", { expiresIn: "60s" }, (err, token) => {
  res.json({
    token
  });
});

После этого я проверяю токен в результате и отправляю его в результат клиенту. Через минуту, как мне восстановить токен? Пожалуйста, помогите и дайте мне знать путь и скажите мне, если я делаю что-то не так. Спасибо !!

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Вы можете создать API, который принимает токен JWT, проверяет его и затем выдает новый токен для того же пользователя.

Взгляните на метод проверки jsonwebtoken. При проверке токена вы можете использовать опцию ignoreExpiration: true, чтобы также проверить просроченный токен. Затем сгенерируйте новый, используя метод sign.
Поэтому, когда вы делаете запрос из внешнего интерфейса, если вы получили ошибку истекшего токена, вы выпускаете новый токен с помощью этого API и сохраняете этот токен.

С учетом вышесказанного я рекомендую вам взглянуть на заметку об обновлении токена JWT из документов :

Прежде всего, мы рекомендуем тщательно подумать, если автообновление JWT не представит никакой уязвимости в вашей системе.

Нам неудобно включать это как часть библиотеки, однако, Вы можете взглянуть на этот пример, чтобы показать, как это может быть сделано. Помимо этого примера есть проблема и тяга просьба получить больше знаний по этой теме.

Вот ссылка в гисте с кодом.

0 голосов
/ 06 сентября 2018

Вам необходимо добавить функцию или промежуточное программное обеспечение, которое будет проверять, является ли JWT действительным или нет. Вы можете использовать verify метод JWT библиотеки:

jwt.verify(token, 'secretKey', function (err, decoded) {
  if (err) {
    if (err.name === 'TokenExpiredError') {
       //create a new token and send the same way you created initially
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...