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

Rob*_*ice 7 cookies subdomain session ruby-on-rails heroku

我正在尝试在我的网站上使用cookie dapshare.com为根地址和'www'子域工作.

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

Dapshare::Application.config.session_store :cookie_store, :key => '_dapshare_session', :domain => :all
Run Code Online (Sandbox Code Playgroud)

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

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

cookies.permanent.signed[:thing_to_store] = store_information
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Rob*_*ice 12

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

我将:域添加到新cookie中,它现在可以正常工作:

cookies.permanent.signed[:new_cookie] = {:value => new_value, :domain => ".dapshare.com"}
Run Code Online (Sandbox Code Playgroud)

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

cookies.delete :new_cookie, :domain => ".dapshare.com"
Run Code Online (Sandbox Code Playgroud)

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


Con*_*nor 5

实际上你可以在Rails 3.1 +中使用domain =>:all而不是domain =>'.dapshare.com'来指定你的cookie:

cookies.permanent.signed[:new_cookie] = {:value => new_value, :domain => :all}
Run Code Online (Sandbox Code Playgroud)

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