我读了它(Log in user using either email address or username in Django)并使用了这个后端
自定义后端:
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.auth.backends import ModelBackend
class EmailOrUsernameModelBackend(ModelBackend):
def authenticate(self, username=None, password=None):
if '@' in username:
kwargs = {'email': username}
else:
kwargs = {'username': username}
try:
user = User.objects.get(**kwargs)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
和settings.py:
AUTHENTICATION_BACKENDS=[
'logintest.custombackend.EmailOrUsernameModelBackend',
]
虽然它运作良好,但我想知道我是否应该像这样使用后端:
AUTHENTICATION_BACKENDS=[
'logintest.custombackend.EmailOrUsernameModelBackend',
'django.contrib.auth.backends.ModelBackend'
]
我是否将它用作后端?或者只有一个自定义后端可以吗?
答案 0 :(得分:1)
没有理由在此添加默认后端,因为它与自定义后端的用户名部分相同。