我希望能够更改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?
答案 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()