自动检测浏览器选项卡中的注销?

Posted

技术标签:

【中文标题】自动检测浏览器选项卡中的注销?【英文标题】:Auto-detect the logout in browser tabs? 【发布时间】:2019-02-15 04:19:32 【问题描述】:

我在浏览器中打开了网站的多个标签。我的问题是,如果我从一个窗口注销“其他窗口如何检测到该用户已注销?”我正在使用 python/django 进行开发

我使用的方法是:

function user_checking()

         $.ajax(
            url: /check_user_login,
            type: 'POST',

            success: function (data) 

            if (data['user_status'] == 'not_loggedin')
            location.reload(); 
            

            ,
            error: function (data) 
            ,

         ); //ajax end
    

    var validateSession = setInterval(user_checking, 1000);

我每秒发送一次 user_checking() 以检查用户是否已注销。这是正确的方法吗?

【问题讨论】:

可以设置一个 cookie 并每隔 'x' 秒轮询 cookie 值吗?我认为 cookie 可以跨同一浏览器中的选项卡工作。 这意味着从前端轮询是必要的......没有其他办法......对吧? 我确信有 100 种方法可以满足您的要求,但这只是我想到的。 【参考方案1】:

我认为这是WebSocket 的完美用例

WebSocket API 是一种先进的技术,可以 打开用户的双向交互通信会话 浏览器和服务器。使用此 API,您可以将消息发送到服务器 无需轮询服务器即可接收事件驱动的响应 回复

A你正在使用Django框架,我建议你阅读这篇文章:

https://blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_apps_in_django

如果你不想或不能使用 WebSocket 技术,那么我认为你的解决方案对于小型网站来说还不错。

一种更懒惰的方法是让其他选项卡保持不变,直到向服务器发出请求。然后,服务器将返回一个响应,告知用户已断开连接。

【讨论】:

以上是关于自动检测浏览器选项卡中的注销?的主要内容,如果未能解决你的问题,请参考以下文章

当用户注销 php 中打开的选项卡之一时,自动注销所有打开的选项卡

检测选项卡之间的会话结束

如何使用 Parse Server 错误从另一个浏览器选项卡检测另一个会话正在进行中

Identity Server 4 - 检查 iframe 会话问题 - oidc 客户端

jQuery:检测鼠标单击并在新选项卡中打开目标

如何在 Qt 对话框中自动检测乱序选项卡导航?