node.js - 处理 JWT 验证失败

标签 node.js express authentication cookies jwt

我希望能够更改 JWT key ,并且不会导致登录用户出现浏览器错误。

目前,如果用户登录并且 JWT key 发生更改,他们的浏览器会抛出错误。这只能通过用户手动从浏览器中删除 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 key 设置新的 cookie?

最佳答案

使用 try-catch block 并发送 res.status,而不是 if 语句。如果有前端,出错,再次推送登录页面

try {
    const { userId } = jwt.verify(token, process.env.APP_SECRET);
    req.userId = userId;
    next()
} catch(err) {
  req.redirect("/login_page")
  res.status(400);
}

关于node.js - 处理 JWT 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54571972/

相关文章:

php - 在 Symfony2 中从 AuthenticationHandler 设置 flashMessage

javascript - 根据对象的键和值构造数组

javascript - Node.js 事件发射器 : How to bind a class context to the event listener and then remove this listener

javascript - 我使用 Express 中间件收到 UnhandledPromiseRejection

node.js - 如何避免使用 discord.js api 超过速率限制?

ios - 如何针对 iCloud 验证 iCloud ID token ?

javascript - 我如何加密电子邮件 ID 并将其解密回来,但字符串长度应为 30-40 。?

javascript - 如何安装 package.json 中没有的 npm 依赖项?

javascript - 快速 GET 路线不起作用

javascript - 如果未登录,则限制对 js 文件的访问