django 完成邮件验证

问题描述

在将这个问题标记为可能重复之前,我想解决一些问题。

我想确保用户一个名为 email 的电子邮件字段。它们还有一个 is_verified 字段,用于指示电子邮件是否已通过验证。

大多数电子邮件验证实施都存在一些缺陷。 假设用户创建了一个帐户并拥有一封未经验证的电子邮件。假设用户实际上并不拥有电子邮件

现在,电子邮件的实际所有者进入了该站点。但是,由于电子邮件已保存在数据库中,我们会收到完整性错误 - 该电子邮件已被使用。

因此,任何骗子都可以输入随机电子邮件并认领。 这会降低用户体验。如何避免这种情况以提供完整的电子邮件验证系统? (实际所有者可以声明其电子邮件的一种方式)

那么,当用户使用其他用户已拥有但未经验证的电子邮件进行注册时,是否应删除现有用户?或者我们应该显示完整性错误消息?正确的做法是什么?

非常感谢!

解决方法

是的,在注册过程中添加验证步骤非常重要。

  • 所以首先创建一个电子邮件模板并发送一封具有唯一性的电子邮件 用户注册时向他们发送代码。实施免费电子邮件服务 从 Django 开始:

    在这里查看我的答案: How to send email via Django?

  • 然后在寄存器函数中每次生成一个随机字符串 查看通过邮件发送验证码。例如。

    verifyCode = random.choice( ["a","b","c","d","x","y","z"]) + str(random.randint(100000,1000000))
    
  • 创建一个临时表,用于存储未经验证的用户数据并 电子邮件验证完成后删除它,然后将其存储在主 用户表。

  • 根据您的上一个问题,如果用户使用未经验证的电子邮件注册,则不应将其存储在主用户表中。请勿使用该电子邮件和用户名登录(授予访问权限)您的网站。

希望这是你想要的。