Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3:在两个应用程序之间共享活动记录会话_Ruby On Rails_Session - Fatal编程技术网

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

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

我有两个rails应用程序,运行在同一个域上。它们都需要对当前用户有所了解。以前,我们一直使用localStorage来处理这个问题,但出于安全考虑,我们不得不过渡到数据库会话存储


每个应用程序都有自己的数据库(目前也将如此)。我有没有办法告诉应用程序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应用程序的登录页面,并处理两个应用程序的身份验证