node.js - 无法从 auth0/express-jwt 库中获取 JWT 的解码负载
问题描述
我正在尝试在我的 expressjs 应用程序中使用express-jwt
fromauth0
作为中间件来获取解码的 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 !',
algorithms: ['HS256'],
credentialsRequired: false,
getToken: processedToken
});
next();
});
module.exports = myMiddleware;
虽然我能够毫无问题地验证我的路由,但我需要获取解码的 JWT 有效负载以供进一步使用。默认情况下,如文档中所写,解码的有效负载应该已附加到req.user
,但是当我尝试 console.log 它时,它显示undefined
. 我也尝试过添加requestProperty
,但效果不佳。的文档resultProperty
不是很清楚,所以我也无法让它工作。
如果有人能指出我正确的方向以帮助我实现中间件的预期结果,我将非常感激。谢谢!
解决方案
推荐阅读
- wordpress - 我可以将 IIS 配置为将流量路由到另一台服务器吗?
- r - R - 数据帧查找和 is.na 处理
- hadoop - 执行保存在 HDFS 路径中的 pig 脚本时出错
- python - Django runserver 在“系统检查未发现问题(0 静音)”处挂起。一阵子
- java - 查找给定字符串中每个字符的出现
- swift - 如何将框架添加到 Xcode Playground 的“Sources”文件夹中的文件中?
- python - 如何在 Python 中比较每一行并获取最后一个完整的句子
- sql - 更新表,其范围内的最小日期大于行中的当前日期,在另一列中
- python - 在excel中通过vba调用python程序时,有没有办法引用活动工作簿?
- javascript - jQuery .css - z-index 未应用于元素