файлы ниже посвящены пользовательской аутентификации, в основном для использования электронной почты в качестве имени пользователя, и она отлично работает на Django 2.0.x.Я начинаю новый проект в Django 2.2, и он больше не работает.Почему?
authmanager / helper_functions.py
from django.contrib.auth import authenticate, login, logout
def _login(request):
if request.method == 'POST':
username = request.POST['email']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return True
else:
return False
else:
return False
def _logout(request):
request.session.flush()
logout(request)
return True
authmanager / mybackend.py
from django.contrib.auth.hashers import check_password
from django.contrib.auth import backends
from .models import User
class MyCustomBackend(backends.ModelBackend):
def authenticate(self, username=None, password=None, **kwargs):
try:
user = User.objects.get(email=username)
if user and check_password(password, user.password):
return user
else:
return None
except User.DoesNotExist:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk = user_id)
except User.DoesNotExist:
return None
settings.py
AUTHENTICATION_BACKENDS = ['crm.authmanager.mybackend.MyCustomBackend',]
AUTH_USER_MODEL = 'authmanager.User'