Письма с подтверждением и данными о состоянии пользователя: хранятся в сеансе, локальном хранилище или базе данных? - PullRequest
0 голосов
/ 06 февраля 2019

Мы создаем SPA, и мы пытаемся решить, какой лучший курс действий здесь.У нас есть страница с конфиденциальной личной информацией, и нам требуется подтверждение по электронной почте для обновления этой информации.

Мы подумали о нескольких способах обработки «хранения» этих пользовательских данных, когда пользователь уходит, чтобы использовать ссылку для подтверждения:

  • Сохранение конфиденциальной информациив сеансе на стороне сервера отправьте электронное письмо с подтверждением, а затем, как только токен будет получен с сервера, щелкнув ссылку электронной почты, извлеките эти данные из сеанса и обновите базу данных, используя их.

  • Храните детали в местном хранилище.Когда наш API ответит, что «для этого требуется подтверждение по электронной почте», он также отправит обратно форму в виде зашифрованного содержимого.Сохраните эту зашифрованную полезную нагрузку в localalstorage, а затем, когда пользователь вернется на сайт с ссылкой для подтверждения, отправьте эту зашифрованную полезную нагрузку на сервер вместе с токеном.Затем сервер расшифровывает полезную нагрузку и обновляет базу данных с этими подробностями.Ключ будет уникальным для каждого пользователя, и все шифрование будет выполняться на сервере.

  • Сохраните промежуточную форму в базе данных.Это будет работать так же, как и в случае с сеансом, описанным выше, но вместо того, чтобы сохранять его в сеансе, он будет хранить его в базе данных.

Что следует учитывать:

  • Сессии очищаются при входе / выходе из системы, поэтому ссылка для подтверждения не будет работать, если это произойдет, и мы сохранили данные в сеансе.Это не произойдет, если хранится в базе данных.Это также относится к смене браузеров / машин или использованию режима инкогнито.

  • Хранение его в локальном хранилище в зашифрованном виде позволяет нам поддерживать «API без сохранения состояния», что снижает требования к серверу (без экземпляра redis, так далее).Поскольку у нас уже есть база данных, я думаю, вы могли бы утверждать, что хранение ее в БД также выполняет это.

Хотелось бы услышать общие мысли по этому поводу.Мы застряли на решении.Спасибо.

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