javascript - 如何在浏览器关闭时清除设计 session ?

标签 javascript ruby-on-rails ruby session devise

我在我的 ruby​​ on rails 应用程序中使用“devise”进行密码验证。一旦我成功登录并关闭浏览器并打开一个新的浏览器窗口,我仍然处于登录状态。假设我正在使用 Chrome,我关闭所有 chrome 实例,然后打开一个新实例。我仍然登录。我在做 IE 和 Firefox 时也是如此。

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

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

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

并尝试发送 AJAX 请求到 session Controller 销毁操作以清除 session 。

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

但这一切都不起作用。

最佳答案

原来问题出在我的 session_store 是如何配置的。

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

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

不过我还有一个问题,那就是去掉选项有没有潜在的风险?显然,我没有在 session 中存储任何重要数据,而是放入了我不想公开的数据。

我的应用程序将在几天后上线,如果能得到答案会很有帮助。我用谷歌搜索了一个小时左右,但运气不太好。

谢谢

关于javascript - 如何在浏览器关闭时清除设计 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9941806/

相关文章:

javascript - 将图像从 localStorage 上传到 PHP

javascript - 如何在 iPhone 的 Phonegap 应用程序中从 Objective-C 中调用 JavaScript 函数?

ruby-on-rails - ActiveRecord::StatementInvalid、PG::UndefinedTable 错误,但生成的 SQL 有效

ruby-on-rails - Ruby 元编程 Q : Calling an external class method on after_save

ruby - 如何从同一个类的另一个实例方法调用实例方法?

javascript - Ruby on Rails,当用户不接受条款时使用 jQuery 显示警报

javascript - 如何处理对google API google.maps.DistanceMatrixService.getDistanceMatrix()的多个请求?

javascript - 高亮 HTML 元素,就像 Javascript 中的 Chrome Dev Tools

ruby-on-rails - rails 3 console --sandbox使用哪个DB?

ruby-on-rails - rake 数据库 :create gives undefined method `[]' for nil:NilClass error