我有两个rails应用,在同一个域上运行。他们都需要一些当前用户的知识。以前我们一直在使用localStorage处理这个问题,但安全问题导致我们转换到数据库会话存储。
每个应用程序都有自己的数据库(暂时还会)。有没有办法让我告诉应用B使用app A的会话商店?我可以在某处定义数据库和表关系吗?
答案 0 :(得分:0)
ActiveRecord :: Base.establish_connection应该有所帮助。假设您的模型名称是应用程序B上的会话,请尝试以下操作:
class Session < ActiveRecord::Base
establish_connection :adapter => 'mysql2', :database => 'database_of_app_a', :host => 'localhost', :username => 'database_of_app_a_username', :password => 'database_of_app_a_password'
end
答案 1 :(得分:0)
我在同一台主机上使用相同数据库设置的Rails 3和Rails 4应用程序之间成功完成了这项工作。
他们应该在initializers / secret_token.rb
中使用相同的密钥AppB::Application.config.secret_key_base = "same-as-app-a"
和在initializers / session_store.rb中设置的表名
AppB::Application.config.session_store :active_record_store
ActiveRecord::SessionStore::Session.table_name = 'app_a_sessions'
Rails 4应用程序甚至没有登录页面 - 它重定向到Rails 3应用程序的登录页面,它处理两者的身份验证。