我目前使用默認的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