Настройка константы ограничения скорости в паспортной функции не работает - PullRequest
0 голосов
/ 07 января 2020

Я использую node.js, паспорт и токен на предъявителя jwt для защиты моих маршрутов. Я также использую ограничение скорости, которое работает, если я определяю const вне паспортной функции:

// setting const start - this works: 
const dailyByEmail = 2;
const limiterMaxDailyByEmail = new RateLimiterMemory({
    keyPrefix: 'api_max_daily_email',
    points: dailyByEmail,
    duration: 60 * 60 * 24,
    blockDuration: 60 * 2
});
// setting const end

passport.use('jwt-access', new JwtStrategy({
    jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken('authorization'),
    secretOrKey: config.JWT_PUBLIC,
}, async (jwt_payload, done) => {

    const connection = require('./config/dbconnection');
    connection.query(..., async function(err, rows) {
    if (err) {
        return done(err);
    }

    var email = rows[0].email;
    var limit = rows[0].limit;  

    // setting const start - does not work: 
    const dailyByEmail = limit;
    const limiterMaxDailyByEmail = new RateLimiterMemory({
        keyPrefix: 'api_max_daily_email',
        points: dailyByEmail,
        duration: 60 * 60 * 24,
        blockDuration: 60 * 2
    });
    // setting const end

    var maxDailyEmail = `api_max_daily_${email}`;
    let retrySecs = 0;

    var resGet = await Promise.all([
        limiterMaxDailyByEmail.get(maxDailyEmail)
    ]);
    var resMaxByEmail = resGet[0];

    console.log(resMaxByEmail);

    ....

    return done(null, rows[0]);

  });

}));

Но я хотел бы определить const в паспортной функции и устанавливать точки по-разному в зависимости от пользователя, но затем console.log (resMaxByEmail); не определено Что может вызвать это и как я могу определить это в паспортной функции после запроса БД?

...