带有用户状态数据的确认电子邮件:存储在会话,本地存储还是数据库中?

时间:2019-02-06 02:24:17

标签: database session encryption local-storage single-page-application

我们正在创建SPA,我们正在尝试确定最佳的行动方案。我们的页面上有一些敏感的个人信息,我们需要通过电子邮件确认以更新此信息。

我们已经想到了几种方法,当用户离开以使用确认链接时,可以“保留”该用户数据:

  • 将敏感信息存储在服务器端会话中,发送确认电子邮件,然后通过单击电子邮件链接从服务器接收到令牌后,从会话中提取那些详细信息并使用它们更新数据库

  • 将详细信息存储在本地存储中。当我们的API回复说“这需要确认电子邮件”时,它也会将表单作为加密的有效载荷发送回去。将此加密的有效负载存储在本地存储中,然后当用户通过确认链接返回站点时,将该加密的有效负载与令牌一起发送到服务器。然后,服务器解密有效负载并使用这些详细信息更新数据库。密钥对于每个用户都是唯一的,并且加密全部在服务器上完成。

  • 将临时表格存储在数据库中。此操作与上面的会话选项相同,但不是将其存储在会话中,而是将其存储在数据库中。

注意事项:

  • 会话将在登录/注销时清除,因此,如果发生这种情况,确认链接将失败,因此我们将数据存储在会话中。如果存储在数据库中,则不会发生这种情况。这也适用于更改浏览器/机器或使用隐身模式。

  • 以加密形式将其存储在本地存储中使我们能够维护“无状态API”,从而降低了服务器要求(无redis实例等)。由于我们已经有一个数据库,所以我想您可能会争辩说,将其存储在数据库中也可以做到这一点。

很想听听对此的一般想法。我们一直在做决定。谢谢。

0 个答案:

没有答案