【问题标题】:django session random timeoutdjango会话随机超时
【发布时间】:2013-01-09 10:46:00
【问题描述】:

我有一个网站,我在 django 上写网站已经有一段时间了,但以前从未遇到过这样的事情......

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

如果我回到我登录的上一页,在转到下一页之前,它显示我再次登录,并且完全随机发生。这不像是在特定动作之后发生的。

通常,当我故意尝试这样做时,一切正常,但随着时间的推移,会发生这样的事情。虽然如果进入登录页面,虽然它随机显示我已注销,但它会自动将我记录回来,因为就像我理解会话确实存在一样,由于某种原因 django 只是没有看到它.....

我很困惑可能出了什么问题。任何可能的建议都会很棒。

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

2) Django 在 nginxuwsgi

上运行

3) 这里是网站site,目前正在开发中,但是你可以用用户测试登录,密码测试试试……也许和你会出现同样的效果'会看到它....但我不保证它会立即发生,它是完全随机的。要尝试,您只需单击随机页面.....最终您会看到它显示您已注销,尽管您没有。

【问题讨论】:

    标签: django session nginx uwsgi


    【解决方案1】:

    您的帖子没有为我们提供太多信息,并且您的页面超时。

    我最好的建议是将 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 代码进行故障排除。

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 2011-09-01
      • 2011-04-11
      • 2013-07-22
      • 2014-05-15
      • 2010-10-20
      • 2010-12-05
      • 1970-01-01
      相关资源
      最近更新 更多