私はこれで少し悩まされています。私は有効なJWTを設定しようとしています。私はjsonwebtokenミドルウェアでnode.jsを使用しています。私はレポ(located here)にある文書に従ってきましたが、私は間違ったExpとIatを得続けます。明らかに、私はJWTが期限切れになっていないようにこの権利を取得したいと思います。JWTのExpとIatを正しく設定できません
私は、次のコードを持ってテストしたよう:
var token = jwt.sign({"id": user._id}, configGeneral.JWT, { expiresIn: '1h' });
var decoded = jwt.decode(token, configGeneral.JWT);
var d1 = new Date(decoded.exp);
var d2 = new Date(decoded.iat);
console.log(decoded);
console.log(d1);
console.log(d2);
これの出力は次のとおりです。私は、タイムスタンプはjavascriptのエポックではなく、時間を反映していないことを得るにはどうすればよい
{ id: '56253091fe0397c80133f3e4',
iat: 1445714161,
exp: 1445717761 }
Sat Jan 17 1970 19:35:17 GMT+0200 (South Africa Standard Time)
Sat Jan 17 1970 19:35:14 GMT+0200 (South Africa Standard Time)
今から1時間? (IATとEXPの両方のために。)
私があなたの4番目のコード例をとり、それをexpiresInにフィードすると、エポックと数日(1970年2月3日)が得られます。しかし、私が1000で除算を削除すると、今日の日付+ 17日と数時間のエポックが得られます。私はちょっと遊んだが、正しい有効期限を示すためにExtを入手した(私の質問の更新を見てください)。しかし、これはまだ私に間違った耳を残す。 – Ebbs
私が思いついた解決策を掲載したのは、ExtとIatを正しくJWTに取り込んでいないという問題を実際に解決したからです。私はその部分を十分に説明していないかもしれないし、あなたはそれのためにその要件を誤解しているかもしれないと思う。しかし、あなたの入力は間違いなく正しい答えを得るのを助けました。 :)私はJWTを解読して、JWTが期限切れになっているかどうかを判断できるように、現在の時刻とExtの秒数を比較しなければならないということが正しいです。 – Ebbs
私は 'new Date().getTime()/ 1000 + 60 * 60'を好むでしょう – ChrLipp