Паспорт, передающий JWT в URL - как отлаживать? - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь настроить подтверждение по электронной почте с помощью Passport и стратегии passport-jwt. У меня есть маршрут, который выглядит следующим образом:

router.route('/confirmation/token=:token')
    .post((req, res, next) => {
        console.log(req.params)
        next();
    }, passport.authenticate('emailconfirm', {session: false}), usersController.confirmation)

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

passport.use(
  "emailconfirm",
  new JwtStrategy(
    {
      jwtFromRequest: ExtractJwt.fromUrlQueryParameter("token"),
      secretOrKey: process.env.EMAIL_SECRET,
      passReqToCallback: true
    },
    async (req, payload, done) => {
      try {
        const user = await User.findById(payload.sub);

        if (!user) {
          return done(null, false);
        }

        done(null, user);
      } catch (error) {
        done(error, false);
      }
    }
  )
);

Когда пользователь регистрируется, генерируется токен, который отправляется вссылка на их электронную почту. Пользователь нажимает на ссылку, и он отправляет их на маршрут подтверждения во внешнем интерфейсе, который вызывает API.

У меня проблема в том, что паспорт просто возвращает ошибку 401, и я не могу понять, почему. Если я добавлю какие-либо журналы консоли в асинхронный обратный вызов для паспорта, ни один из них не будет вызван. Было бы здорово, если бы кто-то, кто делал аутентификацию раньше, мог бы помочь. Спасибо.

...