NodeJS 无法从 jsonwebtoken 获取错误消息



这是我第一次用NPM jsonwebtoken使用JWT,下面是我的代码:

//create a token for user
const token = jwt.sign({ _id: user._id, email:user.email }, 'secret', { issuer:'Dio', expiresIn: '1h' })
//get the token from req.header
const token = req.header('Authorization').replace('Bearer ', '')
jwt.verify(token, "secret", (err, decode)=>{
try{
console.log(decode);
}catch(err){
console.log(err);
}
})

当身份验证失败时,总是打印出">undefined,

。然后我尝试其他方法:

jwt.verify(token, "secret", (err, decode)=>{
if(err){
console.log(err);
}else{
console.log(decode);
}
})

当令牌正确时,可以正常工作,否则我会得到错误消息,如:

JsonWebTokenError: invalid token

SyntaxError: Unexpected token ȗ in JSON at position 0

但是我希望我能得到npm文档中显示的信息,例如:

err = {
name: 'TokenExpiredError',
message: 'jwt expired',
expiredAt: 1408621000
}

代码块1

Try catch不是这样工作的。没有错误,所以它永远不会出现在catch语句中。回调只是函数。这里它接受两个参数,其中没有未捕获或捕获的异常或错误。

所以它总是打印console.log(decode);,它将是undefined因为您有一个无效或过期的令牌。

代码块2

应该打印错误。这里的语法无效(if后面缺少{),这就是异常的原因。

jwt.verify(olderToken, "lololol", (err, decode) => {
if (err) {
console.log(err);
} else {
console.log(decode);
}
})

最新更新