django-session-security会话未到期

时间:2015-09-09 09:46:14

标签: python django

我正在尝试在我的网站上使用ajax池(setTimeout)和django-session-security。在文档中提到了SESSION_SECURITY_PASSIVE_URL,但我似乎无法让它发挥作用。

我的设置:

SESSION_SECURITY_WARN_AFTER = 15
SESSION_SECURITY_EXPIRE_AFTER = 21
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SECURITY_PASSIVE_URL = ['http://localhost:8000/core/notice/check/', 'core/notice/check/', '/core/notice/check/']

我的javascript:

  setTimeout(function(){
    get_notifications();
  }, 2000);

任何想法我做错了什么?

4 个答案:

答案 0 :(得分:2)

似乎只是因为您的设置参数名称缺少结尾的's'。在您的情况下,它应该是'SESSION_SECURITY_PASSIVE_URL S '而不是'SESSION_SECURITY_PASSIVE_URL'。考虑源代码here

除此之外,我相信您可以安全地从SESSION_SECURITY_PASSIVE_URLS列表中删除多余的元素,并在那里只留下'/ core / notice / check /'条目。同样,正如我们可以从the source code看到的那样,通过根据设置中的值列表检查 request.path 来确定请求是否是被动的。

答案 1 :(得分:0)

无法评论,因此尝试在此处回答。您是否已将{% include 'session_security/all.html' %}添加到(基本)模板中?您是否在相应的session_security文件中添加了urls.py个网址?

答案 2 :(得分:0)

SESSION_SECURITY_PASSIVE_URLS允许您添加静态网址。然而,Django中的大多数网址都不是静态的。如何将动态URL添加到此列表以绕过会话更新。例如,在网址/category/1/product/5/中,1和5是动态ID,但我想跳过任何与模式匹配的网址

'/category/(?P<cat_id>[\d]+)/product/(?P<product_id>[\d]+)/'

答案 3 :(得分:0)

这不太可能,但如果您使用 django-ajax 中间件 AJAXMiddleware ,则冲突与session_security机制,以及会话到期可能不会显示通知,或者会话过期可能无法完全发挥作用。我不得不删除AJAXMiddleware以使session_security再次工作。