Предисловие: Я учил себя, как использовать Django пару лет назад, разработал веб-приложение, вручил ключи своим клиентам, и с тех пор мне не приходилось много делать с приложением, и с тех пор я не разрабатывал с Djangoзатем.
Проблема
Многие пользователи не могут успешно войти в систему, и это кажется постоянной проблемой для тех, на кого она влияет.Однако я не могу понять, что общего у этих пользователей.Они используют разные операционные системы, разные браузеры, заходят на сайт в разное время дня / недели / месяца.Это надежный сбой, который, похоже, совсем не соответствует шаблону.
Особенности
Веб-приложение работает на Windows, Django 1.0 и использует MySQL в качествебаза данных.Сеансы хранятся в базе данных.
Устранение возможных причин
К сожалению, это не проблема "неправильного имени пользователя / пароля".Это было бы легко.Нет, тысячи пользователей этого веб-приложения используют одно и то же имя пользователя и пароль.(Не мое предпочтение или выбор!) Кроме того, ошибка аутентификации не сопровождается сообщением об ошибке имени пользователя / пароля.
Теперь сайт работает для большинства пользователей.,Итак, я знаю, что базовая конфигурация аутентификации верна: кортежи MIDDLEWARE_CLASSES
и INSTALLED_APPS
содержат правильные строки вклада.LOGIN_URL
, LOGIN_REDIRECT_URL
и LOGOUT_URL
установлены правильно.Диспетчер URL работает, представления работают и т. Д.
Тот факт, что это постоянный сбой для затронутых пользователей, означает, что это не проблема загрузки.
Для некоторых затронутых пользователей,Использование другого браузера решит проблему.Для других это не так.И это не обязательно вопрос особой конфигурации браузера, потому что многие пользователи, которые пробовали второй браузер, делали это, загружая / устанавливая второй браузер впервые, предположительно используя конфигурацию по умолчанию.(Обратите внимание, что пользователи в основном не являются «опытными пользователями».)
Воспроизведение ошибки
Самое сложное во всем этом - то, что у меня никогда не было неудачноговойдите в систему на любом из моих компьютеров или в браузерах, поэтому невозможно отладить процесс отладки.
Однако проблема воспроизводима.Компьютер основного клиента, когда он вошел в систему и использует IE 7 или 8, не может войти в систему с ожидаемым поведением.Загвоздка: не воспроизводится, когда I подключен к одному и тому же компьютеру, независимо от используемого браузера.
Почему я спрашиваюЗдесь
Я делаю большую часть своей разработки на PHP / MySQL.Когда я ищу проблемы со входом в систему, я ищу проблемы с именем пользователя / паролем, файлами cookie, сеансами на стороне сервера, браузерами и т. Д. Я пишу код отладки для вывода на экран переменных сервера / cookie и т. Д.
К сожалению, я не знаю, как отлаживать промежуточное ПО Django.Я даже не знаю, что это за проблема.
Наконец
Я ломал свой мозг в течение нескольких дней.Несколько месяцев назад я проходил то же самое, также и в течение нескольких дней, прежде чем это было признано более низким приоритетом, чем некоторые другие проекты, которые я имел.Но теперь он вернулся.
Я не могу на всю жизнь увидеть шаблон.Я надеюсь, что у некоторых из вас есть предложения!
EDITED
Вот некоторые соответствующие коды по запросу.
insettings.py
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
LOGIN_URL = '/login/'
LOGOUT_URL = '/logout/'
LOGIN_REDIRECT_URL = '/'
в urls.py
(r'^login/', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),
(r'^logout/', 'django.contrib.auth.views.logout', {'template_name': 'logout.html'}),
в login.html
{% block content %}
<h1>Please Log In</h1>
{% if form.errors %}<p>Your username and password didn't match. Please try again.</p>{% endif %}
<form method="post" action="/login/">
<p>{{ form.username.label_tag }} {{ form.username }}</p>
<p>{{ form.password.label_tag }} {{ form.password }}</p>
<p><input type="submit" value="login" /></p>
<input type="hidden" name="next" value="{{ next }}" />
</form>
{% endblock %}