2011-04-12 7 views
7

Estoy intentando que las cookies en mi sitio dapshare.com funcionen tanto para la dirección raíz como para el subdominio 'www'.El uso compartido de cookies de subdominio en Rails 3 no funciona (en Heroku)?

Una gran cantidad de otras respuestas stackoverflow (y la gran vid Railscasts sobre este tema) han sugerido la adición de esta línea para session_store.rb:

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

Esto no parece hacer una diferencia: si me conecto en dapshare.com, todavía no estoy conectado en www.dapshare.com.

¿Estoy haciendo algo mal aquí? Estoy utilizando el siguiente código para almacenar información en la cookie:

cookies.permanent.signed[:thing_to_store] = store_information 

Gracias por cualquier ayuda!

+0

Debería poder ver la cookie en la configuración de su navegador, ¿qué dice allí que la propiedad 'domain' está configurada? –

+0

Interesante. Acabo de iniciar sesión en www.dapshare.com. Se creó en 'remember_token' para www.dapshare.com, pero creó una '_dapshare_session' para dapshare.com. ¿Eso significa que el código que estoy usando arriba (cookies.permanent ...) no está recogiendo el dominio session_store? –

+0

(por cierto, remember_token es lo que estoy usando para almacenar la identidad del usuario conectado) –

Respuesta

12

Respuesta corta: el uso de las 'cookies [: new_cookie] =' no parece tomar el dominio de los ajustes de configuración session_store.

he añadido el: dominio a la nueva cookie y que ahora trabaja:

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

Para cualquiera que lea lo demás, también es necesario especificar el dominio cuando se elimina la cookie

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

(Gracias para su ayuda con el diagnóstico Andrew Marshall.)

+0

¿Qué sucede si quiero este valor predeterminado para todas mis cookies? No hay configuración que solo ... haga esto por ti? :( – nzifnab

+0

No es que haya encontrado, todavía utilizo el enfoque que figura en mi respuesta. ¡Pero dígame si se le ocurre algo! –

2

He encontrado este problema, al pasar: parece que todo no funciona correctamente. Si desea utilizar sólo para subdominios pruebe lo siguiente:

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

Gracias dombesz - Lo intenté sin suerte en realidad. La cookie _dapshare_session se guardaría en dapshare.com, pero el código que estaba usando para almacenar la cookie (ver la pregunta) siguió guardándose en www.dapshare.com. He solucionado el problema ahora al indicar explícitamente el dominio al configurar la cookie. –

5

Usted puede simplemente especificar sus cookies usando domain =>: all en lugar de domain => '.dapshare.com' en Rails 3.1 +:

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

Esto es más flexible que la especificación directa de un dominio de cadena. Ahora su aplicación no se dividirá en un dominio de producción diferente.

Cuestiones relacionadas