自定义身份验证后端问题

时间:2019-05-08 08:57:56

标签: python django

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

经过研究,发现我制作的自定义身份验证后端出了问题。

play.i18n.Lang

我还已经在settings.py中设置了 AUTHENTICATION_BACKENDS 。应该采取什么措施来纠正此问题。有人可以指出正确的方法吗?

PS。我是自定义身份验证的新手,并期待使用两种登录类型创建一个。

1 个答案:

答案 0 :(得分:1)

除了像这样做外,您还可以添加身份验证后端以使用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',
)