无法从auth0 / express-jwt库获取JWT的已解码有效负载

问题描述

我正在尝试使用express-jwt中的auth0作为我的expressjs应用程序的中间件来获取解码的JWT有效负载。对于要用于身份验证的令牌,我必须先使用自定义async函数来处理令牌,然后再将其提供给express-jwt。我了解我可以在getToken中记录的express-jwt参数下编写一个自定义函数,如下所示,但是它不适用于async函数

const jwt = require("express-jwt");

const checkJwt = jwt({
  secret: 'hello world !',algorithms: ['HS256'],credentialsrequired: false,getToken: function fromHeaderOrQuerystring (req) {
    if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
        return req.headers.authorization.split(' ')[1];
    } else if (req.query && req.query.token) {
      return req.query.token;
    }
    return null;
  }
});

module.exports = checkJwt;

为克服此限制,我将jwt()作为更大的中间件功能的一部分,该功能首先处理令牌,然后将其提供给jwt()。未经处理的令牌已附加到我的标头中。我的代码结构如下:

const myMiddleware = async (req,res,next) => {
  // Process Token First
  const processedToken = await functionToProcesstoken(req.headers.tokenLocation);
  // Jwt Authentication
  jwt({
    secret: 'hello world !',getToken: processedToken
  });
  next();
});

module.exports = myMiddleware;

虽然我可以毫无问题地对路由进行身份验证,但是我需要获取解码后的JWT有效负载以备将来使用。认情况下,如文档中所述,已解码的有效负载应该已经附加到req.user,但是当我尝试进行console.log记录时,它会显示undefined。我也尝试添加requestProperty,但效果不佳。 resultProperty的文档不是很清楚,因此我也无法正常工作。

如果有人能指出正确的方向来帮助我实现中间件的预期成果,我将非常感激。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)