Django:根据请求/表单生成新的CSRF令牌

时间:2012-09-27 06:37:37

标签: django csrf

我们是否可以为一个活动会话更改CSRF令牌每个表单请求甚至每个请求而不是相同的令牌?

3 个答案:

答案 0 :(得分:32)

假设您有权访问 request 对象:

from django.middleware.csrf import rotate_token
rotate_token(request)

答案 1 :(得分:8)

在csrf中间件中,他们做了类似这样的事情,它会覆盖cookie集:

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

您可以通过_get_new_csrf_key()导入from django.middleware.csrf import _get_new_csrf_key()。既然是一种私人方法,我会建议不要这样的黑客。

答案 2 :(得分:3)

如果你想在中间件中使用它:

from django.middleware.csrf import rotate_token

class CSRFRefresh(object):
    def process_response(self, request, response):
        rotate_token(request)
        return response