2009-07-30 25 views
5

Tôi khá mới đối với Rails và Rack, nhưng anh chàng này có vẻ như đơn giản là viết lên về việc sử dụng Rack to implement dynamic session domain middleware. Mã có vẻ tốt và tôi đã triển khai nó ở đây trên máy cục bộ của mình, nhưng tôi vẫn không thể vượt qua các tên miền cấp cao nhất trên một lần đăng nhập duy nhất.Đường ray - Tên miền cookie động sử dụng Rack

Dưới đây là các mã trung gian:

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 

Và sau đó trong environment.db:

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

Cuối cùng trong production.db (và development.db):

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

Bất kỳ giúp đỡ được đánh giá cao.

EDIT: Tôi đang chạy Rails 2.3.3 và Rack 1.0

Trả lời

1

Tôi gặp sự cố tương tự khi làm việc này ở chế độ phát triển. Khi tôi đang thử với localhost, tôi không thể làm việc đó được. Tuy nhiên, bằng cách truy cập nó thông qua một miền được cấu hình trong/etc/hosts để trỏ đến localhost, ví dụ như computer.local, tôi đã có thể làm cho nó hoạt động.

Các vấn đề liên quan