ruby-on-rails - 在 Rails 3 中跨多个子域删除 session Cookie

标签 ruby-on-rails ruby-on-rails-3 session-cookies subdomain

我正在构建一个类似于 Wufoo 的 rails 应用程序。当您注册时,您将获得一个子域,您可以在主页上登录。该应用程序正在运行,因此当您登录时,您会被重定向到您的子域。问题是我无法删除两个域上的 session 。如果您在 (username.myapp.com) 上注销,它会在 (myapp.com) 上保持登录状态,反之亦然。

现在我正在使用 session[:user_id] = nil删除 session 。有没有办法删除所有域中的所有 session 。

另外,我附加了:domain => :all到我的 session_store.rb文件,以便我可以跨多个子域保持登录状态。

最佳答案

关键在于您如何设置 session cookie,因为您无法从顶级域 (myapp.com) 中删除子域 cookie (username.myapp.com)。要解决此问题,您需要将所有共享 session cookie 设置在 myapp.com 域下。为此,请按以下方式设置 session :

Rails.application.config.session_store :cookie_store, :domain => 'myapp.com'

这样,当您销毁 session ( session[:id] = nil ) 时,您将删除共享 cookie。我相信您还必须使用 session[:id] 而不是 session[:user_id] 来删除 session 。

关于ruby-on-rails - 在 Rails 3 中跨多个子域删除 session Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173919/

相关文章:

ruby-on-rails - 卡住安装 Rails : rails s and bundle exec rails server error

ruby-on-rails - 设计:如何手动设置 remember_user_token cookie?

delphi - 如何使用 Indy 的 cookie 来启动 TWebBrowser cookie?

java - 以长类型存储 session 值

ruby-on-rails - 如何在 Rails 中为基于 cookie 的 session 动态设置到期时间

javascript - 在 Rails 中,如何在 HTML 页面上将 javascript 显示为文本?

ruby-on-rails - Ruby on Rails - 停留在 Hartl Book 的第 9.3.3 章,未定义的方法 sign_in

ruby-on-rails - 如何在 Rails 控制台中重新加载模型?

ruby-on-rails - 使用 Rails 编写 RSpec 测试时,spec/requests 文件夹和 spec/controllers 应该放什么?

ruby-on-rails - Rails PostgreSQL 数字字段溢出错误