2009-07-30 11 views
5

Soy bastante nuevo en Rails and Rack, pero este tipo tenía un relato aparentemente sencillo sobre el uso de Rack to implement dynamic session domain middleware. El código se ve bien y lo he implementado aquí en mi máquina local, pero todavía no puedo trascender los dominios de nivel superior en un solo inicio de sesión.Rails - Dominios de cookies dinámicos usando Rack

Aquí está el código de 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 

Y luego, en environment.db:

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

Por último, en production.db (y development.db):

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

Cualquier la ayuda es muy apreciada

EDIT: Estoy corriendo Rails 2.3.3 y 1.0 rack

Respuesta

1

tuve problemas similares para conseguir que esto funcione en el modo de desarrollo. Cuando estaba intentando con localhost, no pude hacer que funcionara. Sin embargo, al acceder a él a través de un dominio configurado en/etc/hosts para apuntar a localhost, por ejemplo computer.local, pude hacer que funcione.

Cuestiones relacionadas