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