node.js - 在 expressjwt 中将变量绑定到异步
问题描述
我有一个下面的场景,将参数从调用函数传递给带有expressJWT
.
module.exports = authorize;
function authorize(roles = ["test"]) {
const secret = config.Secret;
return expressJwt({ secret, isRevoked }).bind({ roles: roles});
}
async function isRevoked(req, payload, done, roles) {
console.log(roles) //undefined
}
在这里,authorize
函数调用异步函数isRevoked
,我想在那里传递参数roles
。
这是正确的方法吗?
解决方案
如果您使用中间匿名函数来获取回调参数 req、payload 和 done,那么您可以将它们与角色数组一起传递给定义的函数。由于闭包,角色数组将可用于 _isRevoked 函数。
module.exports = authorize;
function authorize(roles = ["test"]) {
const secret = config.Secret;
return expressJwt({ secret, isRevoked: (req, payload, done) => _isRevoked(req, payload, done, roles)});
}
async function _isRevoked(req, payload, done, roles) {
console.log(roles) // ["test"]
}
推荐阅读
- python - 如何将 lower() 应用于熊猫列?
- angularjs - AngularJS在提交后清理表单并确保验证错误
- html - 图像上发生鼠标悬停效果时,段落向上移动
- html - CSS Grid 项目溢出包装器
- vba - 做条件循环
- erlang - Erlang 发布测试在 CentOS 7 上失败
- bash - 将在文件中切换行顺序的 sed 命令与 bash 结合使用
- extjs - Extjs 在第一次成功加载后失败 store.getRootNode().findChild('idelement', record.data.idelement, true)
- r - 将模型映射到置换数据集有时会返回模型方程,而不是模型输出
- c++ - My C++ Compiler does not compile an "if" "while", and "for" statement with a variable declarations in it