Обновление Django с 2.0 до 2.2 нарушает пользовательскую аутентификацию - PullRequest
0 голосов
/ 27 апреля 2019

файлы ниже посвящены пользовательской аутентификации, в основном для использования электронной почты в качестве имени пользователя, и она отлично работает на 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...