我希望能够更改 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/