【发布时间】:2023-03-13 12:09:01
【问题描述】:
这是我的验证功能:
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)
我在这里做错了什么?
【问题讨论】:
-
错误行是指向
return next(err);还是var userToken = jwt.sign(req.body.user, config.secret,{? -
无。到 jwt.verify(...
-
那么问题是,为什么
return next(err);不接收和处理err? -
是的。我还尝试了 try{..}catch(err){...} 以确保问题不会返回 next(err)。但同样的情况。
-
我看不出这个库有什么问题:github.com/auth0/node-jsonwebtoken/blob/master/index.js#L243 - 那是你正在使用的模块吗?
标签: javascript node.js express json-web-token