Как обновить sh Повара Сеанса Firebase ie? (Авт / сессии сварить ie -expired) - PullRequest
0 голосов
/ 29 января 2020

Мое приложение использует серверную сессию Firebase ie. Все от входа до выхода реализовано с их официальным способом . Однако, если я не буду использовать приложение в течение некоторого времени, сессия cook ie со временем истечет. У меня есть два варианта:

  1. Выйти из системы и перенаправить пользователя на страницу входа.
  2. без повторной аутентификации пользователя, обновив сеанс приготовления ie на сервере * 1008. *

Нет вопросов по поводу варианта 1. Как бы я реализовал вариант 2, если это возможно, с помощью Firebase?


Единственное, что у меня есть, это expired session cook ie на клиенте и сервере. На данный момент на моем сервере есть промежуточное программное обеспечение, которое возвращает ошибку аутентификации:
export default async (
  req,
  res,
  firebaseAdmin
) => {
  const { session } = req.cookies;

  if (!session) {
    return null;
  }

  const checkRevoked = true;

  return await firebaseAdmin
    .auth()
    .verifySessionCookie(session, checkRevoked)
    .then(decodedClaims => {
      return firebaseAdmin.auth().getUser(decodedClaims.uid);
    })
    .catch(error => {
      throw new AuthenticationError(error.message);
    });
};

Можно ли каким-либо образом использовать сообщение об ошибке auth/session-cookie-expired для повторной аутентификации пользователя в режиме без вывода сообщений? Возможно, мне не следует делать это в первую очередь - из-за проблем с безопасностью - и просто go с вариантом 1.

1 Ответ

0 голосов
/ 31 января 2020

Я думаю, что вы можете сделать следующее:

  • Неактивные сеансы: если пользователь не посещает ваш сайт через некоторое время, а время сеанса повара ie истекает, то вы должны войдите в систему пользователя снова. Это более безопасный вариант.
  • Активные сеансы: вы можете периодически обновлять sh сеанс (активное окно). Если время приготовления ie истекает через 2 недели. Вы можете обновлять sh один раз в день и готовить нового повара ie в течение 2 недель (эффективно продлевая сеанс). Один из способов сделать это - проверить cook ie JWT, а затем войти в систему пользователя (используя тот же uid) с помощью пользовательского токена (используя REST API или клиента Node.js), а затем создать новый сеанс cook ie JWT с этот идентификационный токен и дайте ему новое 2-недельное время жизни.
...