gpt4 book ai didi

django - 如何在没有 User 对象的情况下存储 Django 哈希密码?

转载 作者:行者123 更新时间:2023-12-04 16:17:03 25 4
gpt4 key购买 nike

我有一个 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")

哈希器配置将由 PASSWORD_HASHERS 驱动,这对于身份验证系统和您的 UserActivation 模型应该是通用的。但是你可以在 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',
)

希望这可以帮助。

阅读此链接了解更多详情:
https://docs.djangoproject.com/en/dev/topics/auth/passwords/

关于django - 如何在没有 User 对象的情况下存储 Django 哈希密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com