我正在尝试为django项目进行自定义身份验证。我通过子类化AbstractUser使用自定义用户模型。现在,在创建超级用户帐户并尝试从管理页面登录后,出现错误请输入员工帐户的正确用户名和密码。请注意,这两个字段都可能区分大小写。。我已经仔细检查了我的用户名和密码是否正确。
经过研究,发现我制作的自定义身份验证后端出了问题。
play.i18n.Lang
我还已经在settings.py中设置了 AUTHENTICATION_BACKENDS 。应该采取什么措施来纠正此问题。有人可以指出正确的方法吗?
PS。我是自定义身份验证的新手,并期待使用两种登录类型创建一个。
答案 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',
)