2009-07-30 11 views
5

Jestem całkiem nowy dla Rails i Rack, ale ten facet miał pozornie prosty zapis o używaniu Rack to implement dynamic session domain middleware. Kod wygląda dobrze i zaimplementowałem go tutaj na moim komputerze lokalnym, ale nadal nie jestem w stanie przekroczyć domen najwyższego poziomu na jednym logowaniu.Szyny - Dynamiczne domeny ciasteczek używające szafy

Oto kod 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 

A potem w environment.db:

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

ostatnio we production.db (i development.db):

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

Wszelkie pomoc jest bardzo doceniana.

EDIT: Używam Rails 2.3.3 i Rack 1,0

Odpowiedz

1

miałem podobne problemy z tym, aby pracować w trybie rozwoju. Kiedy próbowałem z localhost, nie mogłem go uruchomić. Jednak, uzyskując dostęp do niego za pośrednictwem domeny skonfigurowanej w/etc/hosts, aby wskazywać na localhost, na przykład computer.local, udało mi się go uruchomić.