【问题标题】:How to set/edit password in django admin view?如何在 django 管理员视图中设置/编辑密码?
【发布时间】:2015-11-09 16:32:02
【问题描述】:

我有两个模型(客户和驱动程序),它们是 Django 的内置用户类的子类。我已将这两个模型添加到 Django Admin。在我当前的实现中,我允许从管理员设置和编辑密码字段。管理员以纯文本形式存储密码 - 这既不安全又与 django 的身份验证系统不兼容。所以客户和司机无法使用我们设置的密码登录。

我需要这个密码字段看起来像:

我需要一种像 django 一样存储密码的方法。我应该在哪里以及如何做到这一点?

【问题讨论】:

  • 你看过django的set_password方法吗?源代码对这个广泛的问题有很多答案
  • @HeddevanderHeide 嗨,是的,我知道这种方法。但是如何在 django admin 中使用它呢?创建新客户时,我需要能够创建新密码。稍后在编辑客户时,我需要能够对其进行更新。
  • 我添加了截图以更好地解释我想要什么。

标签: python django django-models django-forms django-admin


【解决方案1】:

我不知道你在做什么,但我很确定你没有使用过set_password() 函数。

User 类已经具备存储散列密码的能力。

如果您使用它,密码将像这样存储:

您甚至可以通过修改 settings.py 文件来更改 Django 使用的哈希值。默认情况下它使用PBKDF2PasswordHasher,这是相当不错的。

但如果你想要更高的安全性,你可以使用BCryptSHA256PasswordHasher

对于我当前的所有项目,我的 settings.py 文件看起来像这样:

PASSWORD_HASHERS = (
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.SHA1PasswordHasher',
    'django.contrib.auth.hashers.MD5PasswordHasher',
    'django.contrib.auth.hashers.CryptPasswordHasher',
)

更多信息,请阅读文档:https://docs.djangoproject.com/en/1.8/topics/auth/passwords/

希望这会有所帮助。

【讨论】:

  • 我知道 set_password() 方法,并且我知道 User 类能够存储散列密码。但是当我对 User 模型进行子类化时,密码字段显示为基本文本输入。我需要能够处理它。而且,我需要能够允许管理员稍后更新。
  • 我添加了屏幕截图以更好地解释场景。
  • @maSnun 你能检查一下,看看这是否是你需要的吗? blog.omederos.com/posts/2012/05/15/…
  • 不完全是这样,但它给了我重要的指示。谢谢!我把你的答案标记为正确的。
  • @maSnun 很高兴我能提供一些帮助。 :)
猜你喜欢
  • 2011-09-15
  • 2014-09-28
  • 2012-09-29
  • 2015-03-18
  • 2019-06-14
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
相关资源
最近更新 更多