【问题标题】:Migrating Discourse user to Django user将 Discourse 用户迁移到 Django 用户
【发布时间】:2018-08-12 16:54:33
【问题描述】:

我已经从 Discourse 导出了数据库。它确实包含密码哈希和盐。

我做了研究,发现Django默认使用PBKDF2,甚至Discours use that with hashing algorithm sha256 and number of iterations 64000

我想迁移这些密码,以便 Django 能够验证具有相同密码的用户。

【问题讨论】:

    标签: django discourse


    【解决方案1】:

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

    在后端编写您自己的身份验证方法 - 当用户尝试登录时,它接受与 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-02
      • 2014-11-21
      • 2020-05-08
      • 2013-06-08
      • 2021-02-18
      • 1970-01-01
      • 2011-04-11
      • 2021-09-06
      相关资源
      最近更新 更多