我使用node.js和MongoDB实现了JWT令牌认证。一切正常。抛出错误消息也可以正常工作(令牌无效,JWT过期,必须提供JWT)。但是,如何在错误消息中自动获取适当的HTTP状态代码?
// jwt.js
function Verify_Token(accessToken) {
jwt.verify(accessToken, config.get("jwtprivatekey"), function (err) {
value = err
});
return value
}
答案 0 :(得分:1)
jwt.verify将不返回任何数字状态代码。根据jsonwebtoken npm模块的文档,我们可以清楚地看到它在抛出错误时仅返回以下字段。
jwt.verify(token, 'shhhhh', function(err, decoded) {
if (err) {
/*
err = {
name: 'TokenExpiredError',
message: 'jwt expired',
expiredAt: 1408621000
}
*/
}
});
如果必须从nodejs Web服务器返回一些状态代码,则必须将状态代码以及jwt的错误消息嵌入到http响应中。像下面这样。
jwt.verify(token, 'shhhhh', function(err, decoded) {
if (err) {
err = {
name: 'TokenExpiredError',
message: 'jwt expired',
expiredAt: 1408621000
}
return res.status(401).send(err)
}
});