将变量绑定到expressjwt中的异步

时间:2018-12-19 16:37:04

标签: node.js async-await express-jwt

在下面的情况中,我将使用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

这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

如果使用中间匿名函数来获取回调参数req,有效负载和完成,则可以将它们与roles数组一起传递给已定义的函数。由于闭包,角色数组将可用于_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"]
}