Сессия Django периодически пропадает сразу после входа в систему - PullRequest
2 голосов
/ 01 октября 2009

В моем приложении django я обрабатываю вход в систему следующим образом. Пользователи переходят на страницу шлюза (index.html) - если они в данный момент не вошли в систему, будет форма логина / пароля вместе с другими материалами. При успешном входе в систему (или если они во время входа в систему переходят на эту страницу), страница отображается немного иначе (без формы входа).

То, как я обращаюсь в index.html, я делаю:

logged_in = request.user.is_authenticated()

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

Когда пользователь входит в систему, окно входа в систему вызывает:

user = authenticate(username=username, password=password)
if user is not none:
    login(request, user)

А затем они перенаправляются обратно в index.html.

Чаще всего это прекрасно работает. Я вижу, однако, что иногда между HttpResponseRedirect и индексным представлением, что request.user стирается. Я регистрировал это некоторое время, записывая в журнал как последний элемент в представлении входа в систему и первый элемент в представлении индекса. Эффект, который он имеет для пользователя, заключается в том, что он выглядит так, как будто он неправильно вошел в систему (за исключением того, что сообщение об этом не сообщается).

Похоже, что оно идет рывками, так как некоторое время в системе все будет в порядке, а потом я увижу, как это происходит с пользователем 4-5 раз подряд. Должен также отметить, что я никогда не видел / не слышал о том, что это происходит в любой момент , за исключением при входе в систему, насколько я могу судить (возможно, что это произошло, и никто не жаловался) один раз они внутри, они внутри.

Я делаю что-то явно не так с моей методологией входа?

1 Ответ

1 голос
/ 02 октября 2009

Apache + Mod Python или WSGI используют потоки и могут предварительно кэшировать ваши запросы (зависит от вашей конфигурации). Так что, если вы изменили что-то в коде, вы должны перезапустить Apache. тогда проблема должна исчезнуть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...