Для django-axes modelbackend требуется запрос для аутентификации - PullRequest
0 голосов
/ 05 декабря 2018

В моем приложении у меня есть пользовательская модель, использующая django-custom-user, и я использую allauth.Django-axes регистрирует каждую попытку входа в систему с правами администратора и Аллаута, но у меня возникают проблемы с входом пользователя в систему.

Вид входа:

def user_login(request):
    data = dict()

    if request.user.is_authenticated:
        return redirect('frontend:dashboard')

    if request.method == "POST":
        form = LoginForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            if user is not None:
                user = authenticate(email=email, password=password)
                if user.is_active:
                    login(request, user)
                    user_logged_in.send(sender=CustomUser, request=request, user=user)
                    return redirect('frontend:dashboard')
                else:
                    messages.error(request, _('Incorrect email or password.'))
                    user_login_failed.send(sender=CustomUser, request=request, credentials={'username': form.cleaned_data.get('email')})
            else:
                messages.error(request, _('Incorrect email or password.'))
                user_login_failed.send(sender=CustomUser, request=request, credentials={'username': form.cleaned_data.get('email')})
            return redirect('auth:login')
    else:
        form = LoginForm()
    data['form'] = form
    return render(request, os.path.join(settings.AUTH_TEMPLATE, 'login.html'), data)

Когда я пытаюсь войтиЯ получаю эту ошибку:

axes.backends.AxesModelBackend.RequestParameterRequired: DjangoAxesModelBackend requires calls to authenticate to pass `request`

Документация по осям django немного сбивает с толку, и я не понимаю, что мне нужно делать для решения этой проблемы.

Я должен упомянуть об этомошибка появляется только тогда, когда я добавляю axes.backends.AxesModelBackend к AUTHENTICATION_BACKENDS, что обязательно.

1 Ответ

0 голосов
/ 06 февраля 2019

Для меня:

form = AuthenticationForm(data=request.POST, request=request)   
user = authenticate(username=username, password=password, request=request)

и, кроме того, использование декоратора для представления входа в систему

from axes.decorators import axes_dispatch
@axes_dispatch

было решением.Может быть, это вам тоже поможет!

С наилучшими пожеланиями

...