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/