我目前使用默认的cookie作为我的单点登录(SSO),但有些用户在我推送更新后出现奇怪的错误。我正在考虑转移到活动记录来存储会话,但想知道我如何告诉rails该会话在另一个数据库中?Rails与积极记录共享会话
因此,如果我通过AR在App1DB中存储会话,所有其他应用程序如何知道在哪里查找会话?
我目前使用默认的cookie作为我的单点登录(SSO),但有些用户在我推送更新后出现奇怪的错误。我正在考虑转移到活动记录来存储会话,但想知道我如何告诉rails该会话在另一个数据库中?Rails与积极记录共享会话
因此,如果我通过AR在App1DB中存储会话,所有其他应用程序如何知道在哪里查找会话?
Rails肯定是确实支持数据库会话存储。
在到config/environment.rb,取消
# config.action_controller.session_store = :active_record_store
检查\ ActionPack的-2.2.2 \ LIB \ action_controller \会议\ active_record_store.rb表明CGI ::会议::为ActiveRecordStore ::会议从继承的ActiveRecord :: Base的。
因此,在到config/environment.rb结束时,你应该能够说
CGI::Session::ActiveRecordStore::Session.establish_connection(
:adapter => "mysql",
:host => "otherserver",
:username => "session_user",
:password => "123ABC",
:database => "sessions")
或
CGI::Session::ActiveRecordStore::Session.establish_connection(:sessions)
使用Connect在配置定义/ database.yml的
例如,添加到config/database.yml:
sessions_development:
adapter: mysql
host: otherserver
username: sessions_user
password: 123ABC
database: sessions
添加到配置月底/ environment.rb中
CGI::Session::ActiveRecordStore::Session.establish_connection("sessions_#{RAILS_ENV}")
会话配置的导轨文档(http://api.rubyonrails.org/classes/ActionController/SessionManagement/ClassMethods.html#M000312)表示这些是唯一选项:http://api.rubyonrails.org/classes/ActionController/Base.html#M000523。由于未列出要使用的数据库的选项,因此可能不存在。
我们可以得到你的问题作一些澄清?您是否有多个不同的Rails应用程序要使用同一个会话存储?我问,因为你提到SSO和多个应用程序服务器。
在Rails 2.3
打开配置/初始化/ session_store.rb
取消对该行ActionController::Base.session_store = :active_record_store
更改该键的上,它看起来像:key => '_YOUR_APP_NAME_session'
然后重新启动服务器的行值。
结果会改变你的店,并失去所有的旧饼干
对于Rails 3中,这就是:`的ActiveRecord :: SessionStore :: Session.establish_connection` – 2012-01-16 17:19:01