Node.js 处理JWT验证失败
我希望能够更改JWT密钥,并且不会导致登录用户出现浏览器错误 当前,如果用户已登录并且JWT密钥已更改,则其浏览器将抛出错误。这只能通过用户从浏览器中手动删除cookie来解决Node.js 处理JWT验证失败,node.js,express,authentication,cookies,jwt,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);
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?使用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);
}
您可以使用回调来处理verify faliure,并在verify失败时重定向。 你可以使用下面的方法
jwt.verify(token, process.env.APP_SECRET, (err,userId) => {
if(err)
res.send({msg:"your_redirect_loaction_for_login_the_user_again"})
} else {
// user verified
req.userId = userId
}
})