自定义身份验证后端出现问题

2024-09-28 21:03:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为我的django项目创建一个自定义身份验证。现在,在创建超级用户帐户并尝试从管理页面登录之后,出现错误请为员工帐户输入正确的用户名和密码。请注意,这两个字段可能区分大小写。。我已经仔细检查了用户名和密码是否正确。你知道吗

在做了一些研究之后,发现我正在制作的自定义身份验证后端有问题。你知道吗

from support.models import CustomUser

class UsernameIdModelBackend(object):
    def authenticate(self,username,password,uid):

        if username:
            try:
                user = CustomUser.objects.get(username=username)

                if user.check_password(password):
                    return user
            except CustomUser.DoesNotExist:
                    return None
        else:
            try:
                user= CustomUser.objects.get(uid=uid)
                return user
            except CustomUser.DoesNotExist:
                return None

     def get_user(self, user_id):
        try:
            return CustomUser.objects.get(pk=user_id)
        except CustomUser.DoesNotExist:
            return None

我还设置了身份验证\u后端设置.py. 应该改变什么来纠正这个。可以吗有人请给我指路。你知道吗

另外,我是新的自定义身份验证,并期待着创建一个有2种类型的登录。你知道吗


Tags: none身份验证uidgetreturnobjectsusername帐户
1条回答
网友
1楼 · 发布于 2024-09-28 21:03:57

不必这样做,您只需为uid登录添加身份验证后端,如下所示(根据documentation):

class UsernameIdModelBackend(object):
    def authenticate(self, request, uid=None):
       try:
           user= CustomUser.objects.get(uid=uid)
           return user
        except CustomUser.DoesNotExist:
          return None

    def get_user(self, user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

并将其添加到AUTHENTICATION_BACKENDS中,如下所示:

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'your_path_to.backend.UsernameIdModelBackend',
)

相关问题 更多 >