gpt4 book ai didi

javascript - 尝试签署 jwt 返回未定义

转载 作者:行者123 更新时间:2023-12-02 23:48:18 27 4
gpt4 key购买 nike

我正在学习 Node,并且正在从 Python 迁移当前的 API。我正在尝试创建一个 jwt token 以在第三方 API 中进行身份验证,但是我的函数返回 undefined。我用来签署 token 的 jwt 方法是异步的,所以我猜我的函数不会等到 jwt 返回 token 。

这是我签名和创建 jwt token 的函数:

function token() {
const payload = {
iat: Math.floor(new Date() / 1000),
exp: Math.floor(new Date() / 1000) + 30,
sub: "api_key_jwt",
iss: "external",
jti: crypto.randomBytes(6).toString("hex")
};
return jwt.sign(payload, privatekey, { algorithm: "RS256" }, function(
err,
token2
) {
return token2;
});
}

所以,当我调用它时:

exports.genToken = function() {
const header = {
"x-api-key": api
};
const data = {
kid: api,
jwt_token: token()
};

async function authorization(req, res) {
try {
const auth = await rp({
url: authurl,
method: "POST",
headers: header,
body: data
});
res.send(auth.body);
} catch (error) {
res.send(404).send();
}
}

return {
"x-api-key": api,
Authorization: "Bearer " + authorization()
};
};

jwt_token 返回未定义。我做错了什么,该如何解决?

提前谢谢大家!

编辑:console.log(token2) 返回签名的 token 。所以问题是从 token() 函数返回 token

最佳答案

您正尝试从不起作用的回调中返回。更改您的 token 函数以返回 Promise 然后您可以使用 async/await ,例如:

function token() {
...

return new Promise((resolve, reject) => {
jwt.sign(payload, privatekey, { algorithm: "RS256" }, function(err, token2) {
if (err) reject(err);
else resolve(token2)
});
})
}

// note async
exports.genToken = async function() {
...
const data = {
kid: api,
jwt_token: await token()
};
...
}

关于javascript - 尝试签署 jwt 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com