下面是我的验证函数:
exports.validateToken = function(req, res, next){
var token = req.body.token;
jwt.verify(token, config.sessionSecret, function(err, decoded) {
if(err){
return next(err);
}else{
var userToken = jwt.sign(req.body.user, config.secret,{
expiresIn:10000
});
res.json({token: userToken})
}
});
}
我期待一个错误定义,但我得到了一个内部服务器错误的顶部:
TokenExpiredError: jwt expired
at Object.JWT.verify (/Users/Developer/node_modules/jsonwebtoken/index.js:209:19)
at exports.validateToken (/Users/Developer/app/controllers/user.signing.controller.js:369:9)
at Layer.handle [as handle_request] (/Users/Developer/node_modules/express/lib/router/layer.js:76:5)
at next (/Users/Developer/node_modules/express/lib/router/route.js:100:13)
at Route.dispatch (/Users/Developer/node_modules/express/lib/router/route.js:81:3)
at Layer.handle [as handle_request] (/Users/Developer/node_modules/express/lib/router/layer.js:76:5)
我到底做错了什么?
3条答案
按热度按时间qnzebej01#
警告:这是使用
jwt.decode
而不是jwt.verify
。由于JSON Web令牌总是可以在不知道密钥的情况下被解码 *,因此前面的代码仅在来自 * 可信 * 来源时才有效。14ifxucb2#
由于某种原因,下一个响应不起作用。所以我用下面的代码替换了它,一切都很好:
lf5gs5x23#
我已经在代码中尝试过了。
res.locals.data
有助于将数据携带到调用函数。只要在调用函数中获取数据作为
res.locals.data
,您的问题就有望解决。