如何在 django 管理视图中 set/edit 密码?

How to set/edit password in django admin view?

我有两个模型(Customer & Driver),其中子class 来自 Django 的内置用户 class。我已经将这两个模型添加到 Django Admin 中。在我当前的实现中,我允许从管理员设置和编辑密码字段。管理员以纯文本形式存储密码——这既不安全又与 django 的身份验证系统不兼容。所以客户和司机不能使用我们设置的密码登录。

我需要这样的密码字段:

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

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

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

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

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

希望对您有所帮助。

admin.py

from django.contrib.auth.admin import UserAdmin

admin.site.register(User, UserAdmin)  # User is Auth_User_Model