如何在django管理员视图中设置/编辑密码?

时间:2015-08-17 05:53:31

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

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

enter image description here

我需要这个密码字段如下:

enter image description here

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

1 个答案:

答案 0 :(得分:-1)

我不知道你在做什么,但我很确定你还没有使用set_password()功能。

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

如果您使用它,密码将如下存储: See the hashed password.

您甚至可以通过修改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/

希望这有帮助。