Как передать переменную в паспортную стратегию через .authenticate? - PullRequest
1 голос
/ 30 апреля 2019

Это мой текущий механизм аутентификации паспорта

const requireAuth = passport.authenticate('jwt', { session: false });

И моя стратегия определяется следующим образом:

passport.use('jwt', new Strategy(options, (payload, done) => {
    // my logic
}))

Теперь мне нужно изменить requireAuth, чтобы он функционировал как:

function requireAuth(allowProxyLogin) {
    return passport.authenticate('jwt', { session: false })
}

Теперь мне нужно передать эту переменную allowProxyLogin в мою стратегию. Как я могу сделать это с минимальными изменениями в моей стратегии?

EDIT:

Для записи я изменил функцию requireAuth на:

function requireAuth(allowProxyLogin) {
  return [
    (req, res, next) => {
      req.allowProxyLogin = !!allowProxyLogin;
      return next();
    },
    passport.authenticate('jwt', { session: false, passReqToCallback: true }),
  ];
}

Чтобы упростить реализацию ответа @ Saurabh.

1 Ответ

1 голос
/ 30 апреля 2019

Я думаю, что вы можете передать эту опцию 'passReqToCallback' при вызове authenticate

function requireAuth(allowProxyLogin) {
    return passport.authenticate('jwt', { session: false, passReqToCallback: true })
}

Это передаст запрос на ваш обратный вызов проверки, что-то вроде этого

passport.use('jwt', new Strategy(req, options, (payload, done) => {
    // my logic
}))

Теперь вы можете добавить свою переменную allowProxyLogin для запроса и получить к ней доступ при проверке обратного вызова.

...