我正在构建一个类似于Wufoo的rails应用程序。注册后,您将获得一个子域名,您可以登录主页。该应用程序正在运行,因此当您登录时,您将被重定向到您的子域。问题是我无法删除两个域上的会话。如果您注销(username.myapp.com),它将保持登录状态(myapp.com),反之亦然。
现在我正在使用session[:user_id] = nil
删除会话。有没有办法删除所有域中的所有会话。
此外,我将:domain => :all
添加到我的session_store.rb
文件中,以便我可以在多个子域中保持登录状态。
答案 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]来删除会话。