【问题标题】:django - superuser password hash in dumpdata json filedjango - dumpdata json 文件中的超级用户密码哈希
【发布时间】:2012-06-25 07:32:34
【问题描述】:

您好,谁能告诉我 django 存储超级用户数据使用什么哈希? 我问是因为我想预先生成密码哈希,将其粘贴到准备好的 json 夹具中并通过脚本自动加载用户。我只需要知道如何准备特定的密码哈希。 谢谢

【问题讨论】:

  • 安装django,生成超级用户,然后使用python manage --dumpdata生成fixture。那不适合你吗?
  • 如果我想自动安装 NO。我不想手动安装然后设置超级用户。我想从头开始自动安装。
  • 抱歉,您误会了我的意思。我的意思是手动执行一次,第一次,然后使用 dumpdata 的输出来实现自动化。它将节省更多的大脑周期,然后尝试对您建议的密码执行 django set_password 函数。请注意,SECRET_KEY 设置用于生成存储在数据库中的哈希,因此请确保它在您的自动化中保持一致。

标签: django sentry


【解决方案1】:

感谢乔什·斯米顿。我按照你的建议做了 - 第一次手动生成密码,然后将 auth DB 转储到 json 中:

sentry --config=/etc/sentry.conf.py dumpdata --indent=2 auth > ~/auth_data.json

从转储的 json 文件中创建了一个新的夹具:

[
 {
    "pk": 1,
    "model": "auth.user",
    "fields": {
      "username": "somuser",
      "first_name": "Johnny",
      "last_name": "Bravo",
      "is_active": true,
      "is_superuser": true,
      "is_staff": true,
      "last_login": "2012-06-24 01:13:08",
      "groups": [],
      "user_permissions": [],
      "password": "<password_hash>",
      "email": "some@someother.com",
      "date_joined": "2012-06-24 01:10:30"
    }
  }
]

并在没有任何交互的情况下自动加载如下:

sentry --config=/etc/sentry.conf.py loaddata ~/superuser.json

【讨论】:

    【解决方案2】:

    默认情况下,用户密码使用PBKDF2 进行哈希处理。您可以轻松更改此设置。

    哈希以algorithm$hash的格式存储。

    来源:https://docs.djangoproject.com/en/dev/topics/auth/

    【讨论】:

    • 在 1.4 版本中默认 - 之前是 sha1。
    【解决方案3】:

    使用的哈希取决于您使用的 Django 版本。来自 Django 文档:

    Django 1.4 引入了新的灵活密码存储系统,默认使用 PBKDF2。以前版本的Django使用的是SHA1,其他算法不能选。

    如需了解更多信息,请查看documentation。

    【讨论】:

    • 我将如何在命令行上生成密码。假设我想将密码设置为“密码”,然后通过任何身份验证 django 使用它并获取输出来“散列它”。必须有一种方法可以做到这一点,因为输出可以放入 json 夹具并自动加载 - 我确信一些自动测试必须以某种方式这样做。
    • 查看github.com/django/django/blob/master/django/contrib/auth/…的函数PBKDF2PasswordHasher,了解密码哈希的具体实现。
    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2011-04-26
    • 1970-01-01
    • 2019-04-21
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多