Rails 3:在两个应用程序之间共享活动记录会话

时间:2013-10-09 15:12:47

标签: ruby-on-rails session

我有两个rails应用,在同一个域上运行。他们都需要一些当前用户的知识。以前我们一直在使用localStorage处理这个问题,但安全问题导致我们转换到数据库会话存储。

每个应用程序都有自己的数据库(暂时还会)。有没有办法让我告诉应用B使用app A的会话商店?我可以在某处定义数据库和表关系吗?

2 个答案:

答案 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应用程序的登录页面,它处理两者的身份验证。