Rails 2.3和Rails 4.2之间的共享会话

时间:2015-06-01 11:43:22

标签: ruby-on-rails ruby session cookies

我有两个应用程序在不同的rails版本上运行; rails 2.3.18和rails 4.2.1。我需要在它们之间共享会话,以便登录到一个应用程序也会登录到另一个应用程序。我有以下配置:

Rails 2.3

# config/initializers/session_store.rb
ActionController::Base.session = {
  key: '_custom_session',
  secret: 'xyz' }

# config/initializers/cookie_verification_secret.rb
ActionController::Base.cookie_verifier_secret = 'xyz'

Rails 4.2

# config/initializers/session_store.rb
Rails.application.config.session_store :cookie_store, key: '_custom_session'
Rails.application.config.action_dispatch.cookies_serializer = :marshal
Rails.application.config.secret_token = 'xyz'

# config/secrets.yml
# Removed the *secret_key_base*.

登录Rails 4应用程序时,会创建一个名为 _custom_session 的新cookie。 rails 2 app也能够访问相同的cookie。这意味着cookie已经共享。但是,用户没有登录rails 2应用程序。访问rails 2 app重写了共享cookie,因此注销了rails 4用户。

我也尝试过手动设置域名,但这也无济于事:

Rails.application.config.session_store :cookie_store, key: '_custom_session', domain: '.rails.local'

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用activerecord-session_store将会话从cookie存储区转移到数据库中?

发件人:

Rails.application.config.session_store :cookie_store, key: "_rails_session_#{Rails.env}", domain: :all

类似:

Rails.application.config.session_store :active_record_store, :key => 'your_session_key_name'