Domanda

Ho un caso interessante. Sto lavorando su funzionalità bianco-etichettatura per un'applicazione Rails 2.3 e hanno problemi con la creazione di domini di sessione dinamici.

Quindi, ogni white label dovrebbe avere un proprio dominio: company1.com, company2.com, company3.com. Più sopra ciascuno di loro dovrebbe avere un supporto per sottodomini e condividere la sessione tra di loro.

vale a dire. test1.company1.com, test2.company1.com, company1.com <= dovrebbe condividere una sessione comune; test1.example.com, example.com <= dovrebbe condividere una sessione comune, ma diverso da company1.com.

Nel caso comune (per un singolo dominio di base) è fatto in questo modo:

file:production.rb
config.action_controller.session[:domain] = '.company1.com'

Se voglio supportare più domini dovrò impostare questa opzione di configurazione basata in modo dinamico sul dominio del sito si accede. Attualmente sto cercando di realizzare in questo modo:

file:environment.rb
require 'dispatcher'
module ActionController
  class Dispatcher
    def set_session_domain
      tld_size = SubdomainFu.tld_size+1
      host_name = @env['HTTP_HOST'].split('.')[-tld_size,tld_size].join('.')
      ActionController::Base.session = { :domain => ".#{host_name}" }
    end
    before_dispatch :set_session_domain
  end
end

Tuttavia, il codice di cui sopra non funziona.

Hai fatto qualcosa simile successo o avete idea di dove il problema / soluzione potrebbe essere?

Grazie in anticipo per il vostro tempo

È stato utile?

Soluzione

Utilizzando ActionController :: Base.session non sta andando al lavoro, perché viene utilizzato solo quando l'inizializzazione del middleware cremagliera gestione delle sessioni, quindi solo quando si avvia la vostra applicazione. Al fine di rendere il lavoro codice di cui sopra si dovrebbe usare

@env['rack.session.options']

Date un'occhiata qui per un esempio:

http://railsforum.com/viewtopic.php?id=41306

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top