我在共享父域example.com
(pdf.example.com
和studio.example.com
)上运行了两个rails 4应用程序。应用程序部署在AWS上,并将会话存储在共享的Memcached中。
在studio.example.com
的网页上,pdf.example.com
的{{1}}页面会加载到iframe
,覆盖整个可见区域。现在,当用户与iframe内容进行交互时,studio.example.com
中创建的会话应该重置,因为在{pdmp.example.com`页面中studio.example.com
不应该发生超时。
studio.example.com
应用程序使用devise进行身份验证。
以下是用于在studio.example.com
配置/初始化/ session_store.rb
Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 30.minutes
配置/环境/ production.rb 的配置/环境/ development.rb
config.cache_store = :dalli_store
有很多资源(下面列出的很少)解决了这种情况,但所有资源都在使用CookieStore
。 CacheStore
的哪种配置会有所不同?
答案 0 :(得分:2)
http://dev.mikamai.com/post/75476602797/sharing-session-between-your-rails-4x-app-and中建议的解决方案有效。
在两个应用程序中都执行以下操作
secret_key_base
在session_store.rb
中配置相同的密钥和域
Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 30.minutes, key: '_common_key', domain: ".example.com"
在production.rb
Dalli::ElastiCache.new('tripartite.q1ssrz.cfg.usw2.cache.amazonaws.com:11211)
config.cache_store = :dalli_store, elasticache.servers