将变量绑定到 expressjwt 中的异步

Bind variables to async in 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"]
}