我正在尝试使用“JsonWebToken”NPM 模块构建 Node.JS API 身份验证中间件。该令牌是使用私钥“private.pem”生成的,并使用公钥“public.pem”进行验证。
但是,当我尝试验证生成的令牌时,我收到错误
JsonWebTokenError: invalid signature
。
您能帮我找出这段代码的问题吗?预先感谢!
代码如下所示。
签名令牌:
let privateKey = fs.readFileSync('./private.pem', 'utf8');
let token = jwt.sign({ "body": "stuff" }, privateKey, {
algorithm: 'HS256',
expiresIn: '1h'
});
res.send(token);
// Token is then passed as header for verification
验证生成的令牌:
let token = req.headers.authorization.split(' ')[1];
let cert = fs.readFileSync('./public.pem', 'utf8');
jwt.verify(token, cert, { algorithm: "HS256" }, (err, user) => {
if (err) {
console.log(err)
} else {
return next();
}
});
jwt.verify
方法时,您似乎错误地使用了“算法”。尝试下面的代码。
let token = req.headers.authorization.split(' ')[1];
let cert = fs.readFileSync('./public.pem', 'utf8');
jwt.verify(token, cert, { algorithm: ["HS256"] }, (err, user) => {
if (err) {
console.log(err)
} else {
return next();
}
});
https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback