【发布时间】:2019-09-08 22:14:25
【问题描述】:
我正在学习节点,并且正在从 python 迁移我当前的 API。我正在尝试创建一个 jwt 令牌以在第三方 API 中进行身份验证,但是我的函数返回 undefined。我用来签署令牌的 jwt 方法是async,所以我猜我的函数不会等到 jwt 返回令牌。
这是我签署和创建 jwt 令牌的函数:
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 返回undefined。我做错了什么,我该如何解决?
提前谢谢各位!
编辑:console.log(token2) 返回签名的令牌。所以问题是从token() 函数返回令牌
【问题讨论】:
-
你能在回调函数中console.log err变量并发布它的结果吗?是否包含错误?
-
嗨乔治,我编辑了这个问题。实际上令牌是由
jwt.sign签名的,但是它不会返回到token()函数
标签: javascript node.js express jwt