将话语用户迁移到 Django 用户



我已经从Discourse导出了数据库。 它确实含有password_hash和盐。

我已经做了我的研究,发现 Django 默认使用PBKDF2,甚至 Discours 也使用哈希算法 sha256 和迭代次数 64000。

我想迁移这些密码,以便 Django 能够使用相同的密码对用户进行身份验证。

有很多方法可以做到这一点。

在后端编写您自己的身份验证方法 - 当用户尝试登录时,该方法接受与 Discourse 相同的哈希方法。这样,散列密码应与用户的盐和他们输入的密码匹配。

这可以按如下方式完成:

from django.contrib.auth.hashers import PBKDF2PasswordHasher
class MyPBKDF2PasswordHasher(PBKDF2PasswordHasher):
"""
A subclass of PBKDF2PasswordHasher that uses 64000 times more iterations.
"""
iterations = PBKDF2PasswordHasher.iterations * n
iterations = 64000 #Use this for simplicity!!

hashers.py.请注意 -PBKDF2PasswordHasher.iterations * n必须等于 64000 - 我认为迭代次数目前设置为150000,因此直接iterations = 64000可能更容易。迭代是你想要改变的全部内容,所有其他行为都将继承自PBKDF2PasswordHasher类。

然后,您所需要的只是:

PASSWORD_HASHERS = [
'application_name.hashers.MyPBKDF2PasswordHasher',
]

settings.py中,application_name在哪里,是的,您猜对了,可以找到hashers.py的应用程序的名称。

然而。。。以下有关密码存储和哈希处理的文档在您的搜索中可能非常有用:

https://docs.djangoproject.com/en/2.1/topics/auth/passwords/#auth-password-storage

相关内容

  • 没有找到相关文章

最新更新