2009-07-30 4 views
5

Je suis assez nouveau sur Rails and Rack, mais ce gars-là avait une idée apparemment simple sur l'utilisation de Rack to implement dynamic session domain middleware. Le code semble bon et je l'ai implémenté ici sur ma machine locale, mais je ne suis toujours pas capable de transcender les domaines de premier niveau sur une seule connexion.Rails - Domaines de cookie dynamiques utilisant Rack

Voici le code middleware:

class SetCookieDomain 
    def initialize(app, default_domain) 
    @app = app 
    @default_domain = default_domain 
    end 

    def call(env) 
    host = env["HTTP_HOST"].split(':').first 
    env["rack.session.options"][:domain] = custom_domain?(host) ? ".#{host}" : "#{@default_domain}" 
    @app.call(env) 
    end 

    def custom_domain?(host) 
    domain = @default_domain.sub(/^\./, '') 
    host !~ Regexp.new("#{domain}$", Regexp::IGNORECASE) 
    end 
end 

Et puis dans environment.db:

config.load_paths += %W(#{RAILS_ROOT}/app/middlewares) 

Enfin dans production.db (et development.db):

config.middleware.use "SetCookieDomain", ".example.org" 

Tous l'aide est grandement appréciée.

EDIT: Je suis en cours d'exécution Rails 2.3.3 et rack 1.0

Répondre

1

J'ai eu des problèmes similaires obtenir que cela fonctionne en mode développement. Quand j'essayais avec localhost, je ne pouvais pas le faire fonctionner. Cependant, en y accédant via un domaine configuré dans/etc/hosts pour pointer vers localhost, par exemple computer.local, j'ai pu le faire fonctionner.

Questions connexes