web-dev-qa-db-ja.com

トークンを確認するために、ヘッダーからベアラーを置き換える必要があります

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
7
Nainesh Raval

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) {
     }
   }
}
18
Fetrarij

これを試して

bearer = bearerHeader.replace(/^Bearer\s/, '');
    jwt.verify(bearer, 'super_secret', function (err, decoded) {
                        console.log(err);
                        console.log(decoded);`
    }
1
Kingsolo50