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

时间:2017-12-21 08:47:09

标签: ruby-on-rails devise

我正在使用Devise gem,

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

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

2 个答案:

答案 0 :(得分:0)

从模型文件中删除可记住的属性。

答案 1 :(得分:0)

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

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

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

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

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