django会话随机超时

时间:2013-01-08 22:07:23

标签: django session nginx uwsgi

我有一个网站,我一直在django上写网站已经有一段时间了,但是从来没有像以前那样经历过这样的事情......

麻烦当我登录时一切似乎都没问题,但作为冲浪随机页面,经常发生的事情,{%if user.is_authenticated%} {%endif%}之间的代码消失了我没有登录,虽然我只是。

如果我回到我记录的上一页,在进入下一页之前,它会显示我再次登录,并且它完全随机发生。它不像是在具体行动之后发生的。

通常当我尝试这样做时,一切正常,但随着时间的推移,会发生类似这样的事情。虽然如果去登录页面,虽然它随机显示我已经退出,但它会自动将我退回,因为我知道会话确实存在,因为某种原因django只是看不到它.....

我很困惑可能出错的地方。任何可能的建议都会很棒。

1)我没有使用任何会话功能。基本上没有什么可以故意触发这些事件。只是视图中的简单逻辑并返回render_to_response('template',RequestContext(request,{}))

2) Django正在运行 nginx uwsgi

3)这是网站site,目前正在开发中,但您可以使用用户测试和密码测试来尝试...也许会发生相同的效果,你会看到它....但我不保证它会立即发生,它是完全随机的。要尝试你只需要点击随机页面.....并最终你会看到它显示你已经退出,但你没有。

1 个答案:

答案 0 :(得分:0)

您的帖子不会给我们提供太多信息,而且您的网页会超时。

我最好的建议是将login_required装饰器添加到您的所有视图中。如果您实际上已经注销,您将能够看到这种情况发生的位置。

将导入添加到页面顶部,并在每个视图上方添加装饰器,如下所示:

from django.contrib.auth.decorators import login_required


@login_required(login_url='LINK_TO_LOGIN_URL')  
def first_view(request):
    # Your view code

您将在未登录的任何位置被重定向到您的登录URL。

一旦诊断出您的注销位置,就应该能够更轻松地排除故障。如果您能够访问每个视图,则可以对模板和is_authenticated代码进行问题排查。