在Rails 3中跨多个子域名删除会话Cookie

8
我正在构建一个类似Wufoo的rails应用程序。当您注册时,会得到一个子域名,并且可以在主页上登录。该应用程序已经工作正常,因此当您登录时,会被重定向到您的子域名。问题是我无法在两个域上删除会话。如果您在(username.myapp.com)注销,则仍然在(myapp.com)保持登录状态,反之亦然。
目前,我使用session[:user_id] = nil来删除会话。是否有一种方法可以删除所有域上的所有会话?
此外,我将:domain => :all附加到我的session_store.rb文件中,以便我可以跨多个子域名保持登录状态。
1个回答

6

重点是如何设置会话Cookie,因为您无法从顶级域(myapp.com)删除子域Cookie(username.myapp.com)。为解决此问题,您需要将所有共用的会话Cookie设置在myapp.com域下。要做到这一点,请按照以下方式设置会话:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接