В чем разница между стандартным 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? Спасибо