【问题标题】:Generate Django Password生成 Django 密码
【发布时间】:2019-09-25 12:41:45
【问题描述】:

在我的 PostgreSQL 中,有一个密码列,其中的密码以

格式存储
argon2$argon2i$v=19$m=512,t=2,p=2$Z1BlYkltRjNhakFE$1cgxZNRetdjoCYwBrjAICA

有没有办法手动生成这个密码?我不是后端开发人员,因此对通常如何处理这些事情不太了解。

谢谢

【问题讨论】:

  • 您需要提供更多信息。密码将由 Django 代码进行哈希处理。
  • @DanielRoseman 对不起,对所有这些都是全新的。我的要求是:我有一个 Postgres 数据库,我需要将 users 导入其中。每个用户都有一个用户名和密码。如果一个用户是使用 API 调用创建的,它看起来就像问题中的那个。我正在尝试为 100 多个用户生成密码,以便我可以使用 CSV 文件直接导入它们
  • 你需要用 Django 代码来做,而不是直接插入到数据库中。
  • 我能够实现我想要的。我必须启动一个虚拟环境,在那里安装 django。安装氩气2。启动 shell 并运行 make_password。成功了。

标签: django password-hash


【解决方案1】:

你可以使用make_password函数:

from django.contrib.auth.hashers import make_password

make_password('abc123')

但是如果你想为某个用户更改密码,那么就使用这个(从documentation复制粘贴):

>>> from django.contrib.auth.models import User
>>> u = User.objects.get(username='john')
>>> u.set_password('new password')
>>> u.save()

在 Setting.py 中添加以下代码将有助于生成 Argon2 密码:

PASSWORD_HASHERS = [
'django.contrib.auth.hashers.Argon2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
]

您可以通过pip install django[argon2]安装氩气

【讨论】:

  • 这段代码可以在任何 IDE 中工作还是我必须从其他地方运行这段代码?抱歉,对这些东西完全陌生。因为我收到错误No module named django.contrib.auth.hashers
  • 您可以使用django shell 来测试代码。
  • 我能够实现我想要的。我必须启动一个虚拟环境,在那里安装 django。安装氩气2。启动 shell 并运行 make_password。成功了。
  • 我接受了答案...也许您也可以添加氩气部分...考虑到这就是我想要的。
【解决方案2】:

您也可以使用内置函数 https://docs.djangoproject.com/en/stable/topics/auth/customizing/#django.contrib.auth.models.BaseUserManager.make_random_password

for user in new_users:
    password = User.objects.make_random_password()
    user.set_password(password)

还要注意 make_random_password() 接受关键字参数 lengthallowed_chars

【讨论】:

    猜你喜欢
    • 2012-03-17
    • 2011-07-12
    • 2012-08-14
    • 2013-10-06
    • 2018-08-14
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多