1

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

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

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

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

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

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

2) Django 在nginxuwsgi上运行

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

4

1 回答 1

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代码进行故障排除。

于 2013-01-09T02:46:00.603 回答