2011-03-02 106 views
7

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

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

此外,我将:domain => :all附加到我的session_store.rb文件中,因此我可以保持跨多个子域登录。

回答

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]来删除会话。

+0

谢谢,完美的作品。 – 2011-03-02 23:13:45