如何在浏览器关闭时清除设计会话?

我在我的ruby on rails app上使用’devise’进行密码validation。 一旦我成功登录并关闭浏览器并打开一个新的浏览器窗口,我仍然登录。假设我正在使用Chrome,我关闭所有chrome实例,然后打开一个新的。 我仍然登录。当我在做IE和Firefox时也是如此。

我会假设关闭窗口并打开一个新窗口应该在服务器和浏览器之间建立一个新的会话不是吗? 如果不是我如何实现这一目标?

我曾经尝试点击浏览器窗口的onbeforeunload事件上的注销按钮,但它不起作用,因为它在任何表单提交或链接点击时注销应用程序。

 window.onbeforeunload = function() { $('#logout_cls').click(); }; 

并尝试向会话控制器发送AJAX请求销毁用于清除会话的操作。

  jQuery(window).bind( "close", function(event) { $.ajax({ type: 'DELETE', dataType: 'json', url: $('#logout_cls').attr('href') }); }); 

但这一切都行不通。

事实certificate问题是我的session_store的配置方式。

 MyApp::Application.config.session_store :active_record_store, {:key => '_my_app_session', :secret => '5xb5x1g92e965b95b16e49x79gxx9999', :expire_after => 2.hours} 

我删除了选项,问题解决了。

我有另一个问题,那就是删除选项是否有任何潜在的风险? 我没有明确地在会话中存储任何重要数据,但是放入我不希望暴露的数据。

我的应用程序将在几天后上线,为此获得答案将非常有帮助。 我用谷歌搜索了一个小时左右但没有太多运气。

谢谢

这实际上是一个function。 Facebook和几乎所有具有身份validation的网站都通过使用cookie来实现。

Devise的选项Rememberable“管理生成和清除令牌,以便从保存的cookie中记住用户”。 如果您不想这样, remember_created_at从用户模型中删除remember_token字符串和remember_created_at日期时间,并从登录页面中删除“ Remember Me按钮。