Задать вопрос
@heducose

Как выполнить проверку против определенного значения payload в express-jwt?

Привет. Пытаюсь заменить passport-jwt на express-jwt и не могу из их докментации понять как его юзать?

ВОт примерно такой код у меня на Пасспорте

const jwtOptions = {
  jwtFromRequest: ExtractJwt.fromHeader('authorization'),
  secretOrKey: process.env.SECRET
}

const jwtLogin = new JwtStrategy(jwtOptions, function (payload, done) {
  User.findById(payload.sub, function (err, user) {
    if (err) { return done (err, false) }
    if (user) {
      done (null, user)
    } else {
      done (null, false)
    }
  })
})


Собвтсвенно сам роут
const requireAuth = passport.authenticate('jwt', { session: false })

router.get('/demo', requireAuth, function (req, res) {
   res.send({hi: 'SECRET test authorization of registered user'})
})


Проблема в том, что я не могу понять как выполнить проверку express-jwt против значения sub?

router.get('/demo', jwt({ secret: process.env.SECRET }), function (req, res) {
  res.send({hi: 'SECRET test authorization of registered user'})
})
  • Вопрос задан
  • 365 просмотров
Подписаться 2 Оценить 3 комментария
Решения вопроса 1
DarkRaven
@DarkRaven
разработка программного обеспечения
var jwt = require('express-jwt');

app.get('/protected',
  jwt({secret: 'shhhhhhared-secret'}),
  function(req, res) {
    if (!req.user.admin) return res.sendStatus(401);
    res.sendStatus(200);
  });


Если я правильно понял, jwt({secret: 'shhhhhhared-secret'}), говорит нам о том, что при доступе к '/protect' нужно применить middleware jwt с настройками {secret: 'shhhhhhared-secret'} и расшифровать HMAC-токен с использованием секретной фразы 'shhhhhhared-secret', потом пихнуть полученную учетку в запрос.

Внутри же
function(req, res) {
    if (!req.user.admin) return res.sendStatus(401);
    res.sendStatus(200);
  }
вы получаете req и пользователя, и проверяете уже доступ на основание данных учетки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы