Обрабатывать перенаправления после истечения сеанса в приложении ReactJS с Node / Express backend? - PullRequest
0 голосов
/ 02 июля 2018

Я использую экспресс-сессию с redis-store, которая создает httpOnly куки с деталями сеанса. Как я должен обрабатывать истечение срока действия файлов cookie и их очистку пользователем, чтобы я мог перенаправить пользователя обратно на страницу входа?

Вот сценарии:

  1. Cookie _session очищается пользователем.
  2. Cookie _session достиг срока действия.

Таким образом, естественный ответ будет, когда пользователь перезагрузит сайт, React должен выйти из него. Как я должен справиться с этим?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018
app.get('*', function (request, response)  { 
   response.sendFile(path.resolve(__dirname, 'public', 'index.html')); 
});

@ Эллиот, это то, что я использую для обслуживания своего React в Express. Когда я нажимаю перезагрузить этот вызов вызывается и реагирует загрузки. В вызовах API у нас есть метод ошибки. Но в этом нет метода ошибки, так как мне выйти из системы?

0 голосов
/ 02 июля 2018

Я предполагаю, что ваш код Nodejs + Express представляет собой JSON API, а не обслуживает отображаемые на стороне сервера веб-страницы. Если это так, вы должны просто вернуть ошибку, если запрос сделан с просроченным / несуществующим файлом cookie сеанса. Вы можете объединить это в часть промежуточного программного обеспечения, так что вам нужно написать это только один раз, а не несколько раз. Это промежуточное программное обеспечение может возвращать ошибку, которая указывает, например, на «недопустимый сеанс».

С другой стороны, если API-интерфейс возвращает конкретную ошибку, которую вы создали для плохого / несуществующего файла cookie сеанса, вам нужно будет решить, что делать, с вашим кодом реакции. Вы можете отправить пользователя на страницу, сообщив ему, что он вышел из системы, или вы можете отправить его прямо в запрос на вход в систему, указывающий, что он должен пройти повторную аутентификацию.

Если срок действия файла cookie _session истекает, браузер просто очистит его для вас. Поэтому все, что вам нужно беспокоиться о стороне API, - это то, что cookie либо не предоставляется, либо код на стороне сервера, каким-то образом аннулирующий сеанс.

Примеры сценариев:

  • Сценарий. Сеансовый cookie-файл не передается с запросом (истек срок его действия, пользователь удалил cookie-файлы или предыдущий запрос велел браузеру удалить cookie-файл). Результат: отклоните запрос с ошибкой, используйте эту ошибку на веб-интерфейсе, чтобы перенаправить пользователя на экран входа в систему с сообщением «Сначала необходимо войти в систему».
  • Сценарий: сеанс был прерван на стороне сервера, то есть токен в файле cookie сеанса не соответствует действительному сеансу в базе данных (redis, mysql и т. Д.). Результат: верните ту же ошибку, что и в приведенном выше сценарии, тот же результат произойдет, и пользователю будет предложено снова войти в систему.

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

...