dmc1989
@dmc1989

Почему я не получаю payload?

Вроде сделал все как в инструкции, но никак не могу авторизоваться. Пытаюсь вивести payload, чтобы посмотреть, почему не находит пользователя, но получаю результаты только от passport.authenticate('jwt'), а от самой стратегии ничего не выводит. Получаю нормальный токен. Потом через postman передаю его, но получаю ошибку: "user not found". Передавал и через боди в опции auth_token и через Headers в Authorization. Пользователя нашло, токен нормально создало, проверял. Что я делаю не так?
Passport.use(new JwtStrategy(jwtOptions, function (payload, done) {
  console.log("payload:", payload) // даже не срабатывает
    User.findById(payload.id, (err, user) => {
      if (err) {
        return done(err)
      }
      if (user) {
        done(null, user)
      } else {
        done(null, false)
      }
    })
  })
);

router.get('/ss', async (ctx, next) => {
  await passport.authenticate('jwt', { session: false }, function (err, user) {
    if (user) {
      ctx.body = "hello " + user.email;
    } else {
      ctx.body = "No such user";
      console.log("err", err) // получаю вывод только здесь
    }
  } )(ctx, next);
});
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
dmc1989
@dmc1989 Автор вопроса
Проблема была в том, что я не прописал, что чекать при попытке авторизации:
const jwtOptions = {
  jwtFromRequest: ExtractJwt.fromHeader('authorization')
};
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@historydev
Острая аллергия на анимешников
Не знаю как у вас, у меня он принимает 2 строго обозначенных параметра при стандартной авторизации email,password, можно переименовать при необходимости, нужно передавать из req.body именно email/password
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы