django 1.10,自定义auth后端,是否可以使用1个自定义后端?

时间:2017-12-17 18:02:40

标签: django

我读了它(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'
]

我是否将它用作后端?或者只有一个自定义后端可以吗?

1 个答案:

答案 0 :(得分:1)

没有理由在此添加默认后端,因为它与自定义后端的用户名部分相同。