如何在 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
我有两个模型(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