Проверка сеанса / токена в пользовательской конечной точке KeystoneJS

Я успешно аутентифицирую запросы пользователей к моему API KeystoneJS с помощью подхода, описанного здесь.

Однако мне нужно добавить настраиваемую конечную точку экспресс-доставки в мое приложение, которая должна быть доступна только пользователям с действующим токеном в заголовке запроса (см. предыдущий ответ).

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

Как я могу проверить токен в заголовке авторизации запроса GET к моей настраиваемой конечной точке? Имейте в виду, что это может относиться к экспресс-управлению и управлению сеансом, а не конкретно к Keystone.


person Matt Saunders    schedule 29.01.2021    source источник


Ответы (1)


При стандартной настройке к configureExpress можно добавить следующее (см. здесь), чтобы применить промежуточное программное обеспечение сеанса Keystone к настраиваемой конечной точке экспресс-доставки:

app.use('/myEndpoint', keystone._sessionManager.getSessionMiddleware({ keystone }));

Потом:

const whitelist = ['http://localhost:4200'];
const corsOptions = {
  origin: function (origin, callback) {
    if (whitelist.indexOf(origin) !== -1 || !origin) {
      callback(null, true)
    } else {
      callback(new Error('Not allowed by CORS'))
    }
  }
}

app.post('/myEndpoint', cors(corsOptions), (req, res) => {
  if (req.user) {
    // User is authorised
    res.send(req.user);
  } else {
    res.status(401).send()
  }
});

Примечания / ошибки:

  • Ваш POST запрос должен включать запрос GraphQL для аутентификации вашего пользователя по
  • Параметры CORS должны быть правильно настроены
  • Также необходимо указать sessionStore - см. здесь
person Matt Saunders    schedule 01.02.2021