Мы создаем SPA, и мы пытаемся решить, какой лучший курс действий здесь.У нас есть страница с конфиденциальной личной информацией, и нам требуется подтверждение по электронной почте для обновления этой информации.
Мы подумали о нескольких способах обработки «хранения» этих пользовательских данных, когда пользователь уходит, чтобы использовать ссылку для подтверждения:
Сохранение конфиденциальной информациив сеансе на стороне сервера отправьте электронное письмо с подтверждением, а затем, как только токен будет получен с сервера, щелкнув ссылку электронной почты, извлеките эти данные из сеанса и обновите базу данных, используя их.
Храните детали в местном хранилище.Когда наш API ответит, что «для этого требуется подтверждение по электронной почте», он также отправит обратно форму в виде зашифрованного содержимого.Сохраните эту зашифрованную полезную нагрузку в localalstorage, а затем, когда пользователь вернется на сайт с ссылкой для подтверждения, отправьте эту зашифрованную полезную нагрузку на сервер вместе с токеном.Затем сервер расшифровывает полезную нагрузку и обновляет базу данных с этими подробностями.Ключ будет уникальным для каждого пользователя, и все шифрование будет выполняться на сервере.
Сохраните промежуточную форму в базе данных.Это будет работать так же, как и в случае с сеансом, описанным выше, но вместо того, чтобы сохранять его в сеансе, он будет хранить его в базе данных.
Что следует учитывать:
Сессии очищаются при входе / выходе из системы, поэтому ссылка для подтверждения не будет работать, если это произойдет, и мы сохранили данные в сеансе.Это не произойдет, если хранится в базе данных.Это также относится к смене браузеров / машин или использованию режима инкогнито.
Хранение его в локальном хранилище в зашифрованном виде позволяет нам поддерживать «API без сохранения состояния», что снижает требования к серверу (без экземпляра redis, так далее).Поскольку у нас уже есть база данных, я думаю, вы могли бы утверждать, что хранение ее в БД также выполняет это.
Хотелось бы услышать общие мысли по этому поводу.Мы застряли на решении.Спасибо.