¿Compartir sesión (cookies) entre subdominios en Rails?

Resuelto Wahaj Ali asked hace 12 años • 9 respuestas

Tengo una configuración de aplicación donde cada usuario pertenece a una empresa y esa empresa tiene un subdominio (estoy usando subdominios de estilo basecamp). El problema al que me enfrento es que Rails está creando múltiples cookies (una para lvh.me y otra para subdominio.lvh.me), lo que está provocando bastantes interrupciones en mi aplicación (como que los mensajes flash sean persistentes en todas las solicitudes una vez). registrado).

Tengo esto en mi archivo /cofig/initilizers/session_store.rb:

AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all

El dominio: :all parece ser la respuesta estándar que encontré en Google, pero no parece funcionar para mí. ¡Cualquier ayuda es apreciada!

Wahaj Ali avatar May 02 '12 02:05 Wahaj Ali
Aceptado

Resulta que 'dominio: todos' crea una cookie para todos los diferentes subdominios que se visitan durante esa sesión (y garantiza que se transmitan entre solicitudes). Si no se pasa ningún argumento de dominio, significa que se crea una nueva cookie para cada dominio diferente que se visita en la misma sesión y la anterior se descarta. Lo que necesitaba era una única cookie que fuera persistente durante toda la sesión, incluso cuando cambia el dominio. Por lo tanto, aprobar domain: "lvh.me"resolvió el problema en el desarrollo. Esto crea una única cookie que permanece allí entre diferentes subdominios.

Para cualquiera que necesite más explicaciones, este es un excelente enlace: http://excid3.com/blog/sharing-a-devise-user-session-across-subdomains-with-rails-3/

Wahaj Ali avatar May 01 '2012 19:05 Wahaj Ali

http://excid3.com/blog/sharing-a-devise-user-session-across-subdomains-with-rails-3/

"La parte que debes tener en cuenta aquí es que si configuras :domain => :all como se recomienda en algunos lugares, simplemente no funcionará a menos que estés usando localhost. :all tiene por defecto una longitud de TLD de 1 , lo que significa que si estás probando con Pow (myapp.dev), tampoco funcionará porque es un TLD de longitud 2".

En otras palabras necesitas:

 App.config.session_store ... , :domain => :all, :tld_length => 2

También es una buena idea borrar las cookies.

montrealmike avatar Feb 21 '2013 18:02 montrealmike