Rails - 使用Rack实现动态cookie域名

5

我对Rails和Rack还比较陌生,但这位作者似乎很简单明了地介绍了如何使用Rack实现动态会话域中间件。代码看起来不错,我已经在本地机器上实现了它,但我仍然无法在单个登录中跨越顶级域。

下面是中间件代码:

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

然后在 environment.db 文件中:

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

最后在 production.db(和 development.db)中:
config.middleware.use "SetCookieDomain", ".example.org"

任何帮助都非常感激。
编辑:我正在运行Rails 2.3.3和Rack 1.0。
1个回答

1

我在开发模式下也遇到了类似的问题。当我尝试使用localhost时,无法使其正常工作。但是,通过访问通过/etc/hosts配置为指向localhost的域名(例如computer.local),我成功地使其正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接