Rails 3中的子域cookie共享无效(在Heroku上)?

时间:2011-04-12 03:09:33

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

我正在尝试在我的网站上使用cookie dapshare.com适用于根地址和“www”子域。

许多其他stackoverflow答案(以及关于此主题的优秀Railscasts vid)建议将此行添加到session_store.rb:

Dapshare::Application.config.session_store :cookie_store, :key => '_dapshare_session', :domain => :all

这似乎没有什么区别:如果我在dapshare.com登录,我仍然没有登录www.dapshare.com。

我在这里做错了吗?我使用以下代码在cookie中存储信息:

cookies.permanent.signed[:thing_to_store] = store_information

感谢您的帮助!

3 个答案:

答案 0 :(得分:12)

简短回答:使用'cookies [:new_cookie] ='似乎没有从session_store配置设置中获取域名。

我将:域添加到新cookie中,现在可以使用:

cookies.permanent.signed[:new_cookie] = {:value => new_value, :domain => ".dapshare.com"}

对于其他人阅读,您还需要在删除Cookie时指定域

cookies.delete :new_cookie, :domain => ".dapshare.com"

(感谢您对诊断安德鲁·马歇尔的帮助。)

答案 1 :(得分:5)

您实际上只需使用domain =>指定Cookie即可:all而不是domain => Rails 3.1 +中的'.dapshare.com':

cookies.permanent.signed[:new_cookie] = {:value => new_value, :domain => :all}

这比直接指定字符串域更灵活。现在,您的应用程序不会在不同的生产域中中断。

答案 2 :(得分:2)

我遇到这个问题,传递时:所有似乎都没有正常工作。如果您只想用于子域,请尝试以下操作:

Dapshare::Application.config.session_store :cookie_store, :key => '_dapshare_session', :domain => '.dapshare.com'