jsonwebtoken.sign()失败并设置了expiresIn选项

时间:2016-02-01 13:06:30

标签: javascript json-web-token

我需要通过使用JWT签署用户ID来获取令牌:

create_engine('postgresql+psycopg2://', creator=POOL.getconn)

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

错误为privateKey。 如果我删除选项对象,它可以工作,但没有我需要设置的选项。

这个问题似乎很简单,但我不知道如何修复它,我做错了什么?

3 个答案:

答案 0 :(得分:8)

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

有效负载可以是对象文字,缓冲区或字符串。 请注意,仅当有效负载是对象字面值时才设置exp。

答案 1 :(得分:6)

如果您希望能够设置expiresIn选项

,请将有效负载设置为对象
var token = jwt.sign(
    {id: accounts[request.headers.login].id}, // object and not string
    privateKey,
    {expiresIn: 60} // seconds
)

答案 2 :(得分:0)

就我而言,引用环境变量的文件名错误。

technicianAuthSchema.methods.getSignedToken = async function() {
return jwt.sign( { id: this._id }, process.env.JWT_SECRET, { expiresIn: process.env.EXPIRE, } );};

代替这个

technicianAuthSchema.methods.getSignedToken = async function() {
return jwt.sign( { id: this._id }, process.env.JWT_SECRET, { expiresIn: process.env.JWT_EXPIRE, } );};
<块引用>

错误的文件名:expiresIn:process.env.EXPIRE
正确的文件名: expiresIn: process.env.JWT_EXPIRE