我正在尝试在我的网站上使用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
感谢您的帮助!
答案 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'