Ruby on rails Rails 3:在两个应用程序之间共享活动记录会话
我有两个rails应用程序,运行在同一个域上。它们都需要对当前用户有所了解。以前,我们一直使用localStorage来处理这个问题,但出于安全考虑,我们不得不过渡到数据库会话存储Ruby on rails Rails 3:在两个应用程序之间共享活动记录会话,ruby-on-rails,session,Ruby On Rails,Session,我有两个rails应用程序,运行在同一个域上。它们都需要对当前用户有所了解。以前,我们一直使用localStorage来处理这个问题,但出于安全考虑,我们不得不过渡到数据库会话存储 每个应用程序都有自己的数据库(目前也将如此)。我有没有办法告诉应用程序B使用应用程序a的会话存储?我可以为此在某处定义数据库和表关系吗?ActiveRecord::Base.build\u连接应该会有帮助。假设您的模型名是应用程序B上的会话,请尝试以下操作: class Session < ActiveReco
每个应用程序都有自己的数据库(目前也将如此)。我有没有办法告诉应用程序B使用应用程序a的会话存储?我可以为此在某处定义数据库和表关系吗?ActiveRecord::Base.build\u连接应该会有帮助。假设您的模型名是应用程序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
类会话'mysql2',:database=>'database\u of_app\u a',:host=>'localhost',:username=>'database\u of_app\u a\u username',:password=>'database\u of_app\u a\u password'
结束
我在同一台主机上的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应用程序的登录页面,并处理两个应用程序的身份验证