Javascript 在每次登录时生成新的django CSRF令牌

Javascript 在每次登录时生成新的django CSRF令牌,javascript,django,csrf,django-csrf,csrf-protection,Javascript,Django,Csrf,Django Csrf,Csrf Protection,我希望我的网站登录表单在每次刷新页面时生成一个新的CSRF令牌 我试着打电话 logout(request) request.session.flush() 但是隐藏的表单字段始终具有相同的令牌,即使在服务器重新启动之后也是如此 这显然意味着django正在从cookie读取数据。 如何使其忽略cookies并生成新cookies 或者,是否有一种方法可以让我拥有一个中间页面,在进入实际登录页面之前清除所有cookie?如何在Javascript中删除我的域的所有COOKIE?尝试将CSRF\

我希望我的网站登录表单在每次刷新页面时生成一个新的CSRF令牌

我试着打电话

logout(request)
request.session.flush()
但是隐藏的表单字段始终具有相同的令牌,即使在服务器重新启动之后也是如此

这显然意味着django正在从cookie读取数据。 如何使其忽略cookies并生成新cookies


或者,是否有一种方法可以让我拥有一个中间页面,在进入实际登录页面之前清除所有cookie?如何在Javascript中删除我的域的所有COOKIE?

尝试将CSRF\u COOKIE\u AGE=None设置为使用基于会话的CSRF COOKIE,它将COOKIE保存在内存中,而不是持久存储中。我想如果你注销一个用户,CSRF令牌应该会改变

尝试将CSRF_COOKIE_AGE=None设置为使用基于会话的CSRF COOKIE,它将COOKIE保存在内存中,而不是持久存储中。我想如果你注销一个用户,CSRF令牌应该会改变

您可以手动重置令牌,如下所示:

from django.middleware.csrf import _get_new_csrf_key

request.META["CSRF_COOKIE_USED"] = True
request.META["CSRF_COOKIE"] = _get_new_csrf_key()

在Django>=1.6中,您应该改为使用Django.middleware.csrf.rotate\u tokenrequest,它正是这样做的

您可以手动重置令牌,如下所示:

from django.middleware.csrf import _get_new_csrf_key

request.META["CSRF_COOKIE_USED"] = True
request.META["CSRF_COOKIE"] = _get_new_csrf_key()

在Django>=1.6中,您应该改为使用Django.middleware.csrf.rotate\u tokenrequest,它正是这样做的

谢谢你的及时回复。。。。不幸的是,我不能使用它,因为我们使用的是CentOS长期发布服务器,它有django 1.4版本,无法升级。还有其他解决方案吗?您可以通过扩展django.middleware.CSRF.CsrfViewMiddleware创建自己的CSRF中间件子类,并覆盖process\u响应方法。在那里,您可以将set_cookie的最大年龄设置为None。然后在你的设置中指定你的中间件类。谢谢-现在我使用@knbks方法,即使有点黑客。。。几个月后,我们将切换到Ubuntu14,我将使用CSRF_COOKIE_AGE设置。感谢您的及时回复。。。。不幸的是,我不能使用它,因为我们使用的是CentOS长期发布服务器,它有django 1.4版本,无法升级。还有其他解决方案吗?您可以通过扩展django.middleware.CSRF.CsrfViewMiddleware创建自己的CSRF中间件子类,并覆盖process\u响应方法。在那里,您可以将set_cookie的最大年龄设置为None。然后在你的设置中指定你的中间件类。谢谢-现在我使用@knbks方法,即使有点黑客。。。几个月后,我们将切换到Ubuntu14,我将使用CSRF\uCookie\uAge设置。