Доступ к jwtFromRequest из обратного вызова - PullRequest
1 голос
/ 15 апреля 2019

Я учусь passport.js со стратегией JWT и хочу создать систему для выхода из системы пользователей.

Я хочу обработать так:

  1. Когда пользователь выходит из системы, его токен сохраняется в моей базе данных в таблице с именем InvalidTokens
  2. Каждый раз, когда пользователь делает защищенный запрос, я хочу проверить, находится ли его токен втаблица InvalidTokens или нет

Дело в том, что я не знаю, как получить доступ к полю jwtFromRequest в коде ниже:

// passport.js
// File where I store my authentication strategies

// ...

/**
 * Use JWT strategy for all the other requests that need authentication on the
 * server 
 */
var opts = {
  jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
  secretOrKey: 'secret',
}

passport.use('jwt', new JWTStrategy(
  opts,
  async (jwtPayload, done) => {
    try {
      const token = await TokenInvalide.findOne({
        where: {
          Token: '<token_value_I_can\'t_reach>',
        }
      })

      if (token !== null)
        return done(null, false);

      return done(null, jwtPayload.idUtilisateur);

    } catch (e) {
      console.log(e);
      return done(null, false);
    }
  }
));

1 Ответ

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

Согласно документу вы можете передать объект request обратному вызову, установив для passReqToCallback значение true

Не проверял это, но должно быть в правильном направлении

var opts = {
  jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
  secretOrKey: 'secret',

  passReqToCallback: true // <----- Add this

}

passport.use('jwt', new JWTStrategy(
  opts,
  async (req, jwtPayload, done) => {

    const rawJWTToken = req['Authorization'].split(' ')[1]

    ...
  }
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...