删除Rails中多个子域的会话cookie 3

时间:2011-03-02 21:46:33

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

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

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

此外,我将:domain => :all添加到我的session_store.rb文件中,以便我可以在多个子域中保持登录状态。

1 个答案:

答案 0 :(得分:6)

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

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

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