23

JWTでユーザー ID に署名してトークンを取得する必要があります。

var token = jwt.sign(accounts[request.headers.login].id, privateKey, {expiresIn: 60});

idとは文字privateKey列です。

エラーはError: Uncaught error: "expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60です。オプション オブジェクトをまったく削除すると機能しますが、オプションを設定する必要はありません。

問題は単純なようですが、修正方法がわかりません。何が間違っていますか?

4

3 に答える 3

35

https://www.npmjs.com/package/jsonwebtoken#jwtsignpayload-secretorprivatekey-options-callback

ペイロードは、オブジェクト リテラル、バッファ、または文字列にすることができます。exp は、ペイロードがオブジェクト リテラルの場合にのみ設定されることに注意してください。

于 2016-02-01T19:11:10.717 に答える
12

オプションを設定できるようにする場合は、ペイロードをオブジェクトとして設定しますexpiresIn

var token = jwt.sign(
    {id: accounts[request.headers.login].id}, // object and not string
    privateKey,
    {expiresIn: '60d'} // added days, default for ex 60 would be ms, you can also provide '1h' etc
)
于 2020-12-23T18:26:59.417 に答える