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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails设计gem:强制注销浏览器选项卡关闭相关的知识,希望对你有一定的参考价值。

我正在使用Devise gem,

如果我关闭浏览器或浏览器选项卡并再次打开它会话保持活动状态。

如何在浏览器关闭时强制注销用户?

答案

从模型文件中删除rememberable属性。

另一答案

浏览器选项卡关闭:会话cookie是按进程而不是每个窗口。因此,即使您选择了新窗口,您仍然可以获得相同的会话ID。这种行为是有道理的。您不希望用户在浏览您的网站时每次打开新窗口时重新登录。

浏览器关闭:您无法“强制”客户端关闭会话,因为关闭会话是客户端必须从服务器请求的操作(例如:通过注销)。

因此,通常会话具有定期检查的超时时段。每个会话都有一个存储在数据库中的“开始时间”,并且会清除过旧的会话。

也就是说,javascript中可能有某种方式来检测浏览器关闭事件并尽一切努力关闭会话。但无法保证 - 用户总是可以强行终止浏览器进程,让服务器完全处于黑暗中。

简而言之,您不能依赖客户端来关闭会话。超时可能是您的最佳选择。

以上是关于Rails设计gem:强制注销浏览器选项卡关闭的主要内容,如果未能解决你的问题,请参考以下文章

当用户关闭浏览器或选项卡而不注销时如何将用户标记为离线

会话销毁或关闭浏览器选项卡或关闭浏览器后,使用Laravel 5.2执行注销

如何在关闭浏览器选项卡或浏览器时插入数据[重复]

如果用户忘记注销并关闭浏览器,如何删除 Rails 中以前的会话?

禁止用户使用新的浏览器选项卡注销

如何在浏览器多个选项卡中处理用户注销?