用户无法通过自定义登录模型 django 登录

时间:2021-07-12 12:49:40

标签: django

我将使用双重身份验证系统(电子邮件、用户名)。当我通过“createsuperuser”创建用户时,用户可以登录,但是当我在 django 的管理面板中创建用户时,用户无法登录,而且我注意到在管理面板中创建的用户密码未在 DB 中散列!

backend.py:

class EmailBackend(backends.ModelBackend):

def authenticate(self, request, username=None, password=None, **kwargs):
    if username is None:
        username = kwargs.get(UserModel.USERNAME_FIELD)
    try:
        user = UserModel.objects.get(Q(username__iexact=username) | Q(email__iexact=username))
    except UserModel.DoesNotExist:
        UserModel().set_password(password)
    else:
        if user.check_password(password) and self.user_can_authenticate(user):
            return user
    return super().authenticate(request, username, password, **kwargs)

models.py:

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.translation import ugettext_lazy as _

class User(AbstractUser):
    email = models.EmailField(_('email address'), unique=True, null=False, blank=False)

    def __str__(self):
        return self.email

0 个答案:

没有答案