处理JWT验证失败

时间:2019-02-07 11:08:53

标签: node.js express authentication cookies jwt

我希望能够更改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失败,则用户将被迫再次登录,这将基于新的jwt密钥设置新的cookie?

2 个答案:

答案 0 :(得分:0)

代替try语句,使用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);
}

答案 1 :(得分:0)

您可以使用回叫来处理验证失败并在验证失败时重定向。 您可以使用以下内容

.field()