【问题标题】:Why this promisified JWT.verify isn't working?为什么这个承诺的 JWT.verify 不起作用?
【发布时间】:2021-11-29 14:42:06
【问题描述】:

所以我试图手动承诺 jwt.verify 但由于某种原因它没有将 decoded_token 传递给 resolve 函数。

一切正常...

这不是..

PromisifiedJWTVerify.. 有人可以提一下这种行为的原因吗?

【问题讨论】:

标签: node.js express jwt


【解决方案1】:

您需要像在jwt.verify(token, secret, resolve) 上那样使用invoke resolve(),当您只执行resolve 时,您不是在调用它,而是在引用它。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

编辑:把我的答案搞砸了,我认为应该是这样的

jwt.verify(token, secret, (err, data) => {
  if (err) return reject(err);
  return resolve(data);
});

这是因为回调中传递的第一个参数是错误,您不想将其放入resolve,而是放入reject,而第二个参数是实际数据,以防您实际这样做想要resolve

https://www.npmjs.com/package/jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback

【讨论】:

  • 不应该被jwt.verify调用吗?例如,当我在 jwt.verify 中传递回调时,我没有调用它.. 而是将其作为参考传递.. 感谢您的文档..
  • 请检查我的编辑
  • 非常感谢..它现在正在工作..所以据我了解...解决只能接受 1 个参数?如果我想同时传递 err 和 data 来解决怎么办?
  • 好的,好的,我得到了答案... promise 仅将第一个参数视为分辨率值。要传递多个值,我必须将它们作为对象或数组传递...再次感谢 :)
猜你喜欢
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多