Привязать переменные к асинхронному в expressjwt - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть сценарий ниже, чтобы передать параметр из вызывающей функции в асинхронную функцию с 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 голосов
/ 19 декабря 2018

Если вы используете промежуточную анонимную функцию для получения параметров обратного вызова 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"]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...