python - django检测用户在另一个选项卡中登录

标签 python django csrf django-csrf

django 中是否有,如果用户有两个打开的选项卡,都已注销,然后在一个选项卡中登录,则告诉他已在另一个选项卡中登录?我的意思是像 github 这样的东西告诉你你已经登录,请刷新页面。

现在的问题是,如果我在一个选项卡中登录,然后在第二个选项卡中登录,则会出现 csrf token Missing 错误。

最佳答案

你得到csrf token missing incorrect.因为当用户重新登录时,服务器会为 cookie 生成一个新的 csrf token 。 cookie 在同一域中持续存在。当您尝试在当前页面上执行某些操作时,请求会失败,因为 <form> 中存在 csrf与已更改的 cookie 不同。这就是 github 刷新页面(而不是继续执行请求)的原因。这样服务器就会以 html 形式将新的 csrf 返回到您的表单。

编辑:

考虑以下选择:

  • 如果您的 cookie 不是只读的: .设置setInterval您可以在其中检查用户加载页面的 session 以及来自 cookie 的当前 session 。
  • 渲染页面的前 4 个字符并将其保存到变量中。页面加载时设置此变量。每个请求都会传递带有 header 的变量。添加middleware它检查 headers 中的前 4 个字符是否与 cookie 中的前 4 个字符匹配,以及是否不告诉客户端刷新页面。
  • 如果您想自动检测您的情况,您需要经常向服务器发送垃圾邮件并询问 session 是否已更改。从客户端,您可以发送旧 session 和新 session (如果 session 是只读的,您可以从服务器发送一些第一个字符)。

关于python - django检测用户在另一个选项卡中登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50345862/

相关文章:

python - 检测方波边缘

python - 为什么我安装的软件包无法被识别

python - 如果 Python 中没有数据传输,如何从标准输入或文件中读取?

Django 将 db 对象与空 QuerySet 连接起来

django-django-taggit表单

PHP CSRF 表单 token + 验证建议

security - Meteor.js 和 CSRF/XSS 攻击

python - 合并和比较

python - 根据外键选择在 django-admin 中填充值...再次

python - 在 React 应用程序中使用 axios.post 到 Django 端点时出现 403 错误代码