6

ドキュメントによると、https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callbackjwt.verifyデコード ペイロードを返します。簡単なスクリプトを実行します。

var token = jwt.sign({email: req.body.email,}, 's3cr3t');
var decoded = jwt.verify(token, 's3cr3t');
console.log(decoded)

しかし、次のようにしか出力されません:{ iat: 1470725598 }

出力は次のようになるはずです{email: myemail@domain.com,}

私が欠けているものはありますか?

4

2 に答える 2

16

プロパティreq.body.emailをに設定するまで、問題を再現できませんでしたundefined

例:

var jwt = require('jsonwebtoken');
var token = jwt.sign({email: undefined}, 's3cr3t');
var decoded = jwt.verify(token, 's3cr3t'); 

定義されていない場合、出力は次のようになります。

{ iat: 1470727340 }

そして、これはあなたが持っていたものと正確に一致するため、あなたの主な問題は単にプロパティがあったのではないかと疑ってreq.body.emailundefinedます。

req.body.email「myemail@domain.com」に正しく設定されていると仮定すると、出力は次のようになります。

{ メール: 'myemail@domain.com', iat: 1470727500 }

ここでちょっと補足。ドキュメントに示されているように、句.verify内にメソッドをラップすることを検討することをお勧めします。try-catchこれは、トークンが無効な場合に検証してエラーをスローするのに役立ちます。

于 2016-08-09T07:25:12.410 に答える
0

verify-function は、3 番目のパラメーター を受け取りますfunction (err, decoded)。コードは次のようになります。

jwt.verify (token, "s3cr3t", function (err, decoded) {
    if (err) throw err;

    // decoded object with your data
}
于 2016-08-09T07:18:46.913 に答える