У меня есть многостраничный сайт, использующий aws-ampify, работающий на нескольких серверах с pm2. Я не могу заставить сайт войти в систему - PullRequest
0 голосов
/ 26 июня 2019

У меня есть экспресс-сервер, обслуживающий несколько страниц, где некоторые нуждаются в аутентификации. Я запускаю pm2 с 8 серверами. Я использую @ aws-ampify / auth на сервере и сохраняю токен в куки. У меня есть промежуточное ПО, которое извлекает куки и добавляет заголовок авторизации перед переходом на защищенные страницы. метод currentAuthenticatedUser () не использует заголовок. возвращается не вошедший в систему. Как правильно отправить заголовок авторизации с помощью express или использовать правильный метод на сервере для аутентификации?

Экспресс промежуточное ПО для установки заголовка из cookie

app.use((req, res, next) => {
  const token = req.cookies.key;
  // console.log('isAuthorized', token);
  if (token) {
    console.log('Found Authorization header');
    req.headers['Authorization'] = `${token}`;
  }
  next();
});

Экспресс-маршрут для установки файлов cookie при успешном входе в систему

router.post('/signin', async (req, res, next) => {
  const { username, password } = req.body;

  if (!username || !password) {
    return res.sendStatus(403);
  }

  await Auth.signIn(username, password)
        .then(user => {
          const token = user.signInUserSession.idToken.jwtToken;
          res.cookie('key', token, { maxAge: (60 * 60 * 24 * 1000), httpOnly: true });
          console.log('set token');
          res.sendStatus(200);
        })
        .catch(err => {
          console.log(err);
          res.sendStatus(403);
        });

});

Экспресс-маршрут для возврата авторизованных пользователей

const isAuthorized = async (req, res, next) => {
  console.log('headers', Boolean(req.headers.Authorization));
  await Auth.currentAuthenticatedUser()
    .then(user => {
      console.log('signed in');
      next();
    })
    .catch(err => {
      console.log('Not signed in', err);
      res.redirect(302, '/login');
    });
}

Мой ожидаемый результат - когда пользователь входит в систему, и я хочу, чтобы его статус входа сохранялся с использованием действительных токенов jwt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...