从AbstractUser继承的模型不会哈希密码字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从AbstractUser继承的模型不会哈希密码字段相关的知识,希望对你有一定的参考价值。
我有一个继承了AbstractUser的模型,如下所示:
class Driver(AbstractUser):
dni = models.CharField(max_length=8,validators=[validate_dni],unique=True)
license = models.CharField(max_length=9,unique=True)
birthday = models.DateField()
sex = models.CharField(max_length=1, choices=SEX_CHOICES)
creation_date = models.DateField(auto_now = True)
根据这个:https://docs.djangoproject.com/en/dev/topics/auth/customizing/
如果您对Django的用户模型完全满意并且您只想添加一些其他配置文件信息,则可以简单地继承django.contrib.auth.models.AbstractUser并添加自定义配置文件字段。此类提供默认用户的完整实现作为抽象模型。
但是,在我的管理视图中,密码字段是一个简单的文本输入,密码保存为原始文本。我可以尝试使用AbstractBaseUser,但首先我需要澄清这个问题。我是从Django开始的,所以我是一个小新手。
谢谢。
答案
您需要定义一个函数来散列该密码。我想你直接把它保存到数据库。
class MyForm(forms.ModelForm):
............
def save(self, commit=True):
# Save the provided password in hashed format
user = super(MyForm, self).save(commit=False)
user.set_password(self.cleaned_data["password"])
if commit:
user.save()
return user
另一答案
您不必实际定义自己的功能。你只需要使用来自UserAdmin
的django.contrib.auth.admin
类注册它,它开箱即用。
显然,在您的admin.py文件中,请确保您具有以下内容:
from django.contrib.auth.admin import UserAdmin
admin.site.register(CustomUserModel, UserAdmin)
以上是关于从AbstractUser继承的模型不会哈希密码字段的主要内容,如果未能解决你的问题,请参考以下文章
django - 继承 AbstractUser 明文 问题处理