我正在尝试在我的网站上使用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);
任何想法我做错了什么?
答案 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再次工作。