来自 django.contrib.auth.views.login() 的间歇性 403 响应



使用 django.contrib.auth.views.login() 处理用户登录 我在生产环境中看到了 403 个响应。第二次登录尝试在初始 403 之后成功(当该响应发生时)。

我已经开始记录所有 403 次登录失败,捕获 POST 有效负载和 cookie 值,这表明 csrfmiddlewaretoken(隐藏表单字段值)和 csrftoken(cookie 值)不匹配。它是间歇性的,发生在许多用户身上。

以下装饰器都应用于用于代理 django.contrib.auth.views.login() 函数的登录函数:@ensure_csrf_cookie、@sensitive_post_parameters、@csrf_protect、@never_cache

此问题的原因可能是什么?

CSRF 令牌在登录后轮换。

如果您在一个选项卡中打开登录页面,使用第二个选项卡登录,那么如果您在原始选项卡上提交表单,您将收到 CSRF 错误。

最新更新