У меня проблемы с интеграцией пользовательского бэкэнда аутентификации в django 2.1.4
.Ниже приведен мой код:
мой FMS.authBackend
модуль:
from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
class authEmailBackend(ModelBackend):
def authenticate(self, username=None, password=None, **kwargs):
print("aaaaaaa")
UserModel = get_user_model()
try:
user = UserModel.objects.get(email=username)
except UserModel.DoesNotExist:
return None
else:
if user.check_password(password):
return user
return None
мой settings.py
:
AUTHENTICATION_BACKENDS = (
'FMS.authBackend.authEmailBackend',
'django.contrib.auth.backends.ModelBackend',
)
мой urls.py
:
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login', my_decos.logout_required(auth_views.LoginView.as_view(template_name = 'register/login.html')),name = 'login')
]
Приведенный выше код не работает в моем случае.Функция authenticate
в authEmailBackend
никогда не вызывается как ничего, напечатанное в консоли, но я печатаю оператор в authenticate
функции.
, хотя тот же код работал для django 2.0.8
, единственное отличие тогда заключалось в том, чтоurls.py
было:
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login', my_decos.logout_required(auth_views.login(template_name = 'register/login.html')),name = 'login')
]
, но в более новом django django.contrib.auth.views.login
больше не поддерживает, и нам нужно использовать django.contrib.auth.views.LoginView
.Я где-то читал, что для использования пользовательских AUTHENTICATION_BACKEND
наш URL должен указывать на django.contrib.auth.views.login
, но это здесь невозможно.
Так что вы можете помочь мне решить эту проблему.