В чем разница между стандартным LoginView и созданием собственной формы с аутентификацией в Django? Один работает, другой нет с LDAP

Я спрашиваю об этом, потому что я использую ldap для аутентификации пользователей. Пользователь входит в систему с помощью стандартного Django LoginView, а в обратной стороне ldap делает все проверки и все работает. Однако, если вместо этого я настраиваю свой собственный метод входа с аутентификацией, он больше не работает. Я знаю, что мой метод входа правильный, потому что он работает в приложениях без ldap. Поэтому мне интересно, что это за различия... Чтобы быть более точным... вот два примера:

1) Это мой индивидуальный метод:

def login_page(request):
    login_data = LoginForm()
    return render(request, 'login.html', {'login_data':login_data})

def login_validate(request):
    login_data = LoginForm(request.POST)

    if login_data.is_valid():
        user = auth.authenticate(username=request.POST['username'], password=request.POST['password'])
        if user is not None:
            if user.is_active:
                auth.login(request, user)
                return redirect('/')

        error_message= 'Incorrect password / username. Try again.'
        return render(request, 'login.html', {'login_data':login_data,'login_errors':error_message})
    error_message= 'Internal error. Please contact the administrator.'
    return render(request, 'login.html', {'login_data':login_data,'login_errors':error_message})

Это не работает с ldap... однако если вместо этого я выберу

2) Логин по умолчанию:

def login(request):
    return LoginView.as_view(template_name='login.html')(request)

он работает с ldap ... оба работают в приложениях без ldap. так в чем же разница между ними. Я не показываю установку ldap, но по умолчанию установлен django-ldap. Что делает LoginView особенным в этом случае? Если есть различия, то как мне настроить свой собственный логин, чтобы он вел себя идентично LoginView? Спасибо

Вернуться на верх