如果选项卡关闭,则自动注销[重复]

Posted

技术标签:

【中文标题】如果选项卡关闭,则自动注销[重复]【英文标题】:Automatic logout if the tab is closed [duplicate] 【发布时间】:2013-08-02 13:13:25 【问题描述】:

如果他/她关闭了选项卡(他/她登录帐户的选项卡),我将如何自动登录用户。 我知道使用 cookie 可能是可行的,但是我们如何通过 Sessions 来实现呢?

【问题讨论】:

使用javascript在关闭时调用注销脚本 降低会话超时值 它是否必须在标签关闭状态下,还是在该用户没有页面请求后很快就会超时? @Anigel 不...不要那样做。这在大多数情况下都会失败...... Cookie 是的,但选项卡中的会话,嗯,不完全确定。浏览器需要“关闭”才能与die 建立会话。会话需要使用时间戳作为其变量,我会“猜测”。 【参考方案1】:

您无法保证在窗口关闭时用户会被注销,因为您依赖于页面正常关闭。如果浏览器硬崩溃,Javascript 将无法执行。

我建议在 AJAX 中实现 Javascript 代码,在窗口卸载时调用注销页面,这在大多数情况下都可以工作。

对于其他情况,您应该降低会话超时限制。

【讨论】:

【参考方案2】:

取决于你想要的严格程度。

如果您需要“即时”注销,那么最简单的方法是使用 AJAX 每隔 30 秒到 1 分钟 ping 您的服务器,以保持会话处于活动状态。 这会在您的服务器上造成大量开销增加负载,但这是唯一可靠的方法立即让某人离开。

同样的原则适用于更长的时间。比如说30分钟。您可以执行this topic 中所说的操作并在 30 分钟后注销某人,或者再次使用 AJAX 每 10 - 15 分钟 ping 服务器 并保持会话用户在页面上时活着

可能没有更多内容了。

就像@thatidiotguy 说的,你可以实现窗口卸载事件来处理用户退出,但你必须非常小心 - 如果用户打开了 2 个浏览器窗口会怎样? 如果他同时查看 2 个页面,你不想让他退出。

【讨论】:

关于打开 2 个窗口的要点。您可以添加一些代码来存储会话中打开的选项卡数量,然后仅在最后一个关闭时注销。 你会如何实现这个?听起来不错,但我不知道该怎么做。每次浏览器导航到 index.php 时,您能否终止会话?我尝试这样做,但索引页面将无法加载。

以上是关于如果选项卡关闭,则自动注销[重复]的主要内容,如果未能解决你的问题,请参考以下文章

打开多个选项卡的自动注销

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

关闭选项卡后,更新数据库中的注销时间

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

当用户在页面 javascript 或 php 中不活动 3 分钟时自动注销

Rails设计gem:强制注销浏览器选项卡关闭