我需要通过使用JWT签署用户ID来获取令牌:
create_engine('postgresql+psycopg2://', creator=POOL.getconn)
var token = jwt.sign(accounts[request.headers.login].id, privateKey, {expiresIn: 60});
和id
是字符串。
错误为privateKey
。
如果我删除选项对象,它可以工作,但没有我需要设置的选项。
这个问题似乎很简单,但我不知道如何修复它,我做错了什么?
答案 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