Django allauth不会对密码进行哈希处理

时间:2019-04-29 17:12:41

标签: django django-allauth django-users django-custom-user

我正在使用Django AllAuth进行社交登录。我没有自定义用户注册表单,但是我使用自定义用户模型。这是我的用户模型:

class User(AbstractUser):
    is_candidate = models.BooleanField(default=True)
    is_employer = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)

    username = models.CharField(max_length=40, unique=False, default='')

    first_name = models.CharField(_("Ime"), max_length=50, null=True)
    last_name = models.CharField(_("Prezime"), max_length=50, null=True)

    mobile =  models.CharField(_("Telefon"), max_length=20,null=True, blank=True, unique=True)
    address = models.CharField(_("Adresa"), max_length=250, null=True, blank=True)

    def __str__(self):
        return self.email

现在,在收到错误消息:我尝试使用的所有用户登录时的用户名/密码组合均不正确后,我检查了数据库,并注意到注册用户的密码根本没有被散列。请注意,超级用户的密码(我用python manage.py createsuperuser创建的密码)已正确散列。

因此,在谷歌搜索之后,我发现我需要覆盖AllAuth的save_user()方法,因此我已经在我的settings.file中设置了ACCOUNT_ADAPTER = 'core.social_adapter.UserAccountAdapter',并向myproject/core/social_adapter.py添加了以下代码:

class UserAccountAdapter(DefaultAccountAdapter):
    print("using account adapter")
    def save_user(self, request, user, form, commit=True):
        user = super(UserAccountAdapter, self).save_user(request, user, form, commit=False)
        user.is_candidate = True
        user.password = makepassword( form.cleaned_data['password'] )
        print('in custom adapter save_user method')
        print(user.password)
        user.save()
        return user

但是,这根本没有帮助。而且,似乎save_user方法根本没有使用,因为我只在控制台中打印了"using account adapter"

我错过了什么吗,还是我现在弄错了这个过程?

0 个答案:

没有答案