在我的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次发生在用户身上。我还应该注意到,除了在登录时,我从来没有看到/听到过这种情况,据我所知(它可能已经发生并且没有人抱怨)一旦他们进来,他们就进来了。
我在这里做了一些明显错误的登录方法吗?
答案 0 :(得分:1)
Apache + Mod Python或WSGI使用线程并可能预先缓存您的请求(取决于您的conf)。因此,如果您在代码中更改了某些内容,则必须重新启动Apache。然后问题应该消失。