我有两个模型(Customer& Driver),它们是Django内置的User类的子类。我已将这两个模型添加到Django Admin。在我当前的实现中,我允许从管理员设置和编辑密码字段。管理员以纯文本形式存储密码 - 这是不安全的,与django的auth系统不兼容。因此客户和司机无法使用我们设置的密码登录。
我需要这个密码字段如下:
我需要一种像django那样存储密码的方法。我应该在哪里以及如何做到这一点?
答案 0 :(得分:-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/
希望这有帮助。