处理 JWT 验证失败

1 authentication cookies node.js express 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();
});
Run Code Online (Sandbox Code Playgroud)

我可以在上面的代码中添加什么,以便如果 jwt.verify 失败,用户被迫再次登录,这将根据新的 jwt 密钥设置新的 cookie?

Aur*_*ora 8

使用 try-catch 块并发送 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);
}
Run Code Online (Sandbox Code Playgroud)