В моем приложении 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 раз подряд. Должен также отметить, что я никогда не видел / не слышал о том, что это происходит в любой момент , за исключением при входе в систему, насколько я могу судить (возможно, что это произошло, и никто не жаловался) один раз они внутри, они внутри.
Я делаю что-то явно не так с моей методологией входа?