Обработка JWT Verify Failure - PullRequest
0 голосов
/ 07 февраля 2019

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

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

server.express.use((req, res, next) => {
  const { token } = req.cookies;
  if (token) {
    const { userId } = jwt.verify(token, process.env.APP_SECRET);
    req.userId = userId;
  }
  next();
});

Что можно добавить к приведенному выше коду, чтобы в случае сбоя jwt.verify пользователь был вынужден снова войти в систему, чтоустановит новый файл cookie на основе нового секретного ключа jwt?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

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


    jwt.verify(token, process.env.APP_SECRET, (err,userId) => {
                if(err)
          res.send({msg:"your_redirect_loaction_for_login_the_user_again"})
                } else {
                 // user verified
                 req.userId = userId
                }
            })
0 голосов
/ 07 февраля 2019

вместо вашего оператора if, используйте блок try-catch и отправьте res.status.Если будет внешний интерфейс, при ошибке снова нажмите страницу входа в систему

try {
    const { userId } = jwt.verify(token, process.env.APP_SECRET);
    req.userId = userId;
    next()
} catch(err) {
  req.redirect("/login_page")
  res.status(400);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...