我们可以在创建用户之前验证电子邮件吗?

问题描述 投票:0回答:1

我们可以这样做吗

  • 当用户注册时,我们会将用户信息存储在客户端存储中。
  • 然后将在服务器上生成带有一些exp时间的验证令牌(JWT)。
  • 我们会将包含该令牌的验证链接发送到用户的电子邮件,并将相同的令牌发送到客户端以存储在那里。
  • 当用户单击链接中存在并存储在客户端上的链接令牌时,将用于验证其帐户。如果验证成功,用户信息将发送到数据库。
authentication jwt email-verification next
1个回答
0
投票

是的,您当然可以在数据库中实际创建用户记录之前实施电子邮件验证过程。您提出的方法是可行的,但有一些非常规步骤。以下是概述和一些建议:

在客户端存储上存储用户信息:这是非常规的。通常,当用户注册时,应用程序会将用户数据存储在服务器上(通常存储在临时表中或带有指示用户未经验证的标志)。将敏感用户信息存储在客户端存储(如本地存储)上并不安全,因为它容易受到 XSS 攻击。

生成验证令牌:使用 JWT 来实现此目的很好。您可以将必要的信息(例如用户标识符或电子邮件地址)编码到 JWT 中,然后对其进行签名。过期时间将确保令牌不会无限期有效。

发送验证链接:这是标准方法。将 JWT 令牌嵌入验证链接并将其发送到用户的电子邮件地址。

在客户端存储Token:这一步似乎没有必要。通常,当用户单击电子邮件中的验证链接时,服务器会解码 JWT、验证其签名、检查签名是否过期,然后确认用户的电子邮件。无需与客户端上的令牌进行比较。

创建用户: 验证电子邮件后,您可以在主用户表中创建用户记录(或更新现有临时记录以指示用户现已验证)。

© www.soinside.com 2019 - 2024. All rights reserved.