- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Django 应用程序,它允许网络访问者创建自己的帐户。一旦他们创建了一个带有密码的帐户,他们就会收到包含激活码的电子邮件。当网络访问者创建新帐户时,他们需要收到一封包含唯一 key 的激活电子邮件。
显然,我可以使用 Django 的内置身份验证系统来完成所有这些工作。我以前做过没有任何问题。但是,在这个应用程序中,我不想让非事件用户污染我的用户表。我只希望激活的用户出现在用户表中。因此,虽然我将使用 Django 的帐户系统来验证已激活的用户,但在他们被激活之前,我正在运行我自己的系统。我将有关尚未激活的用户的所有数据保存在一个单独的 Django 模型对象(称为 UserActivation
)中。我将亲自管理激活电子邮件的发送。
我遇到的问题是我不想以纯文本形式存储用户提交的密码。我想将它存储在我的 UserActivation 对象中名为“password”的字段中,其散列格式与出现在 User 表中的相同。要将它放入用户对象中,我会做 myUser.set_password("plainTextPassword")
.如何获得相同的值并将其塞入 UserActivation.password
?
从看 this doc,好像有make_password()
返回我需要的值的函数。但是我仍然需要一个 User 对象来调用该方法。我如何转换 "plainTextPassword"
在不通过用户对象的情况下散列密码?
最佳答案
你走在正确的轨道上。但是,您可以使用手动管理密码
from django.contrib.auth.hashers import make_password
print "Hashed password is:", make_password("plain_text")
make_password
中传递它方法也。
PASSWORD_HASHERS = (
'myproject.hashers.MyPBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher',
)
关于django - 如何在没有 User 对象的情况下存储 Django 哈希密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098466/
我是一名优秀的程序员,十分优秀!