【问题标题】:Subdomain Session Not Working in Rails 2.3 and Rails 3 on Heroku with/without a Custom Domain?在有/没有自定义域的 Heroku 上,子域会话在 Rails 2.3 和 Rails 3 中不起作用?
【发布时间】:2011-07-17 11:50:52
【问题描述】:

所以我有两个 Heroku 应用程序:

production-app.com,我有几个子域使用带有 Zerigo 的 Heroku 自定义域插件(不是通配符域插件):

development-app.heroku.com 上,我也有那些自定义子域,但由于我没有自定义域,所以我只使用wildcard addon

在我的routes.rb 中,使用Subdomain-Fu,我的子域在本地和两个 Heroku 应用程序上工作。

我现在面临的问题是,如何在所有子域之间保持会话同步

我已尝试将此添加到 production.rb:

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => '.production-app.com')

甚至是这些的组合:

begin
  config.action_controller.session[:domain] = '.production-app.com'
  config.action_controller.session[:session_domain] = '.production-app.com'
rescue
  config.action_controller.session = {:domain => '.production-app.com', :session_domain => ".production-app.com"}
end

...对于开发站点,这两个:

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => '.heroku.com')
# or
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => '.development-app.heroku.com')

这些都不会保持子域之间的会话。当我有一个自定义域并且我只是运行一个 Heroku 子域时,我如何让它工作?

谢谢!

【问题讨论】:

    标签: ruby-on-rails session heroku subdomain


    【解决方案1】:

    在您的 config/initializers/session_store.rb 中,告诉 rails 在所有域中设置 cookie:

    Rails.application.config.session_store :cookie_store, :key => '_yourapp_session', :domain=>:all
    

    和这个SO question一样

    如果您想在“development-app.heroku.com”和“production-app.com”之间保持会话,除非它们是相同的代码库,否则无法完成。如果它们是相同的代码库,则在应用程序控制器上使用 before_filter 重定向到 production-app.com

    【讨论】:

      【解决方案2】:

      在 development-app.heroku.com 上,我也有那些自定义子域, 但由于我没有自定义域,我只使用wildcard addon

      此插件是否仍可用于使用 api.mydevdomain.herokuapp.com 等自定义子域?

      【讨论】:

        猜你喜欢
        • 2011-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-05
        • 2012-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多