Django的。通过邮件确认用户创建

时间:2009-07-16 13:55:05

标签: django validation email

我想从django应用程序创建django用户,然后通过向他们发送带有验证链接的电子邮件来确认用户创建。

如何从用户详细信息安全地生成此链接(我不想生成随机值并将其存储在数据库中,我不想使用任何外部模块,如Pinax)

2 个答案:

答案 0 :(得分:4)

你想要抓住django-registration并称之为完成:http://bitbucket.org/ubernostrum/django-registration/wiki/Home

  

这是一个简单的应用程序   提供灵活的用户注册   对于基于Django的项目。默认   setup实现了相当普遍的功能   工作流程:

     
      
  1. 用户注册帐户。
  2.   
  3. 用户会收到一封包含激活说明的电子邮件   帐户。
  4.   
  5. 用户激活并开始使用该网站。
  6.   

有关如何整合和使用它的文档:http://bitbucket.org/ubernostrum/django-registration/src/tip/docs/overview.txt

它管理注册密钥,超时期限和激活帐户的所有处理。

我已经使用了几次轻微的mods,即使使用gmail帐户发送测试也很容易进行测试。

将此添加到应用中的settings.py以使用Gmail帐户进行测试:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'YOURUSERATGOOGLEMAIL@gmail.com'
EMAIL_HOST_PASSWORD = 'YOURPASSWORD'
EMAIL_PORT = 587

另外,django-profiles是这个django-registration工具包的一个很好的补充:http://bitbucket.org/ubernostrum/django-profiles/wiki/Home

答案 1 :(得分:1)

你可以这样做:

from django.utils.hashcompat import sha_constructor

salt = "secret_salt"
confirmation_key = sha_constructor(salt + email_address).hexdigest()

然后将validation_key作为验证链接中查询字符串的一部分发送。我不确定这会有多安全。

为什么不在没有db的情况下这样做?看看django-email-confirmation的标准(使用db)方法来解决这个问题。