我有两个应用程序在不同的rails版本上运行; rails 2.3.18和rails 4.2.1。我需要在它们之间共享会话,以便登录到一个应用程序也会登录到另一个应用程序。我有以下配置:
# 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'
# 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'
任何帮助都将不胜感激。
答案 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'