Получение статуса 401 при попытке доступа к защищенному маршруту с использованием passport-jwt - PullRequest
0 голосов
/ 05 февраля 2019

Я использую JWT, работая с passport.js для аутентификации.У меня есть local strategy, который регистрируется, и другой, который входит в систему пользователя.В настоящее время он возвращает токен, выполнив:

req.login(user, {session: false}, (err) => {
    if (err) {
      res.send(err);
    }
    var jwtUser = {
      _id: user.id,
      email: user.email
    };
    const token = jwt.sign(jwtUser, config.passport.jwtSecret);
    return res.json({jwtUser, token});
});

Это возвращает объект, подобный:

{"jwtUser":
 {
    "_id":"5c55f0be9ddcf71a704d92b2",
    "email":"john.doe@example.com"
  },
 "token":"<token>" // redacted this because it contains my personal email
}

Итак, я получаю токен, который верен (я проверилиспользуя онлайн-декодер, он дает правильный идентификатор пользователя и правильный адрес электронной почты).

Когда я использую этот маршрут, чтобы попытаться проверить, работает стратегия JWT или нет, я получаю сообщение о несанкционированном доступе 401.

Вот моя стратегия JWT

var opts = {};
opts.jwtFromRequest = ExtractJWT.fromAuthHeaderAsBearerToken();
opts.secretOrKey = config.passport.jwtSecret;
passport.use('jwt', new JWTstrategy(opts, function(jwt_payload, done) {
  console.log('payload received: ', jwt_payload);
    User.findOne({id: jwt_payload.id}, function(err, user) {
      console.log('User: ', user);
      if (user) {
        console.log(user);
        return done(null, user);
      }
      if (err) {
        return done(err, false);
      }
    });
}));

Мой маршрут

router.get('/auth/test', passport.authenticate('jwt', { session: false }), (req, res) => {
  res.send('You reached a private route.');
});

Моя локальная стратегия работает с использованиемтот же метод вызова паспорта.

Я думаю, что я включил все ценное, если что-то отсутствует, скажите, пожалуйста, и я обновлю ОП с ним.

Я должен отметить, что я использую почтальоначтобы проверить это и использовать метод авторизации токена на предъявителя.

Заранее спасибо!

...