【发布时间】:2014-09-25 17:36:24
【问题描述】:
我有一个 Django 应用程序,它允许网络访问者在那里创建自己的帐户。一旦他们使用密码创建了一个帐户,他们应该会收到包含激活码的电子邮件。当网络访问者创建一个新帐户时,他们需要收到一封包含唯一密钥的激活电子邮件。
显然,我可以使用 Django 的内置身份验证系统来完成所有这些工作。我以前做过,没有任何问题。但是,在这个应用程序中,我不想让非活动用户污染我的用户表。我只希望激活的用户出现在用户表中。因此,虽然我将使用 Django 的帐户系统来验证激活的用户,但在他们被激活之前,我正在滚动我自己的系统。我将有关尚未激活的用户的所有数据保存在一个单独的 Django 模型对象(称为UserActivation)中。我将自己管理激活电子邮件的发送。
我遇到的问题是我不想以纯文本形式存储用户提交的密码。我想将它存储在我的 UserActivation 对象中的一个名为“密码”的字段中,其散列格式与它将出现在用户表中的哈希格式相同。要将其放入用户对象,我会做myUser.set_password("plainTextPassword")。如何获得相同的值并将其填充到 UserActivation.password?
通过查看this 文档,似乎有一个make_password() 函数可以返回我需要的值。但我仍然需要一个用户对象来调用该方法。如何在不通过 User 对象的情况下将 "plainTextPassword" 转换为哈希密码?
【问题讨论】: