2010-09-18 10 views
2

J'ai trouvé de nombreux articles qui décrivent comment faire cela. Ils regardent tous quelque chose comme mettre cela dans le fichier de configuration de l'environnement approprié:Comment partager des sessions entre sous-domaines avec Rails 2.3.8

config.action_controller.session[:domain] = '.localhost' 

Cependant, si je le fais alors essayez de vous connecter (je me sers concevoir) échoue avec:

ActionController::InvalidAuthenticityToken 

Je vois d'autres postent le même problème (à la section des commentaires des différents blogs offrant le conseil pour définir la session [: domain]) mais je n'ai pas trouvé de cas où quelqu'un ait répondu à la question de savoir pourquoi cela se passe et comment le réparer.

Des idées?

Répondre

1

Je ne sais pas si cela est lié à votre problème, mais essayez-vous de définir le domaine de session à seulement '.localhost'? Cela ne fonctionnera pas comme un domaine de premier niveau pour lequel vous essayez de définir un cookie.

Voir http://www.ruby-forum.com/topic/181650#794923

1

Je cet extrait dans config/initializers/set_session_domain.rb:

module ActionControllerExtensions 
    def self.included(base) 
    base::Dispatcher.send :include, DispatcherExtensions 
    end 

    module DispatcherExtensions 
    def self.included(base) 
     base.send :before_dispatch, :set_session_domain 
    end 

    def set_session_domain 
     domain = @env['HTTP_HOST'].gsub(/:\d+$/, '').gsub(/^[^.]*/, '') 
     @env['rack.session.options'].update :domain => domain 
    end 
    end 
end 

ActionController.send :include, ActionControllerExtensions 

Tout fonctionne très bien.