bearer = bearerHeader.replace("Bearer","");
jwt.verify(bearer, 'super_secret', function (err, decoded) {
console.log(err);
console.log(decoded);
});
これが私のコードです。トークンを確認しようとするときはいつでも。トークンのみを検証するために、ヘッダーからベアラーを置き換えたい。ベアラーを取る場合は常に「エラー」になります。ヘッダーからベアラーを削除すると、完全に機能します。誰かが私がこれを解決するのを手伝ってください。この問題を解決する方法はありますか?
出力:
{
[JsonWebTokenError: invalid token] name: 'JsonWebTokenError',
message: 'invalid token'
}
undefined
bearerHeaderが「Bearer456513」のようなものである場合、コード
bearerHeader.replace("Bearer","");
結果は次のようになります: "456513"(トークンの前にスペースがあります)
bearerHeader.replace('Bearer ','');
問題は解決するかもしれませんが、最初に認証スキームを確認することをお勧めします(「ベアラー」という用語は実際には「ベアラー」です)。
var parts = bearerHeader.split(' ');
if (parts.length === 2) {
var scheme = parts[0];
var credentials = parts[1];
if (/^Bearer$/i.test(scheme)) {
token = credentials;
//verify token
jwt.verify(token, 'super secret', function(err, decoded) {
}
}
}
これを試して
bearer = bearerHeader.replace(/^Bearer\s/, '');
jwt.verify(bearer, 'super_secret', function (err, decoded) {
console.log(err);
console.log(decoded);`
}