首页 > 解决方案 > 在 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

这是正确的方法吗?

标签: node.jsasync-awaitexpress-jwt

解决方案


如果您使用中间匿名函数来获取回调参数 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"]
}

推荐阅读