2008-12-18 11 views
6

के साथ साझा सत्र साझा किए हैं, वर्तमान में मैं अपने एकल साइन ऑन (एसएसओ) के रूप में डिफ़ॉल्ट कुकीज़ का उपयोग कर रहा हूं लेकिन कुछ उपयोगकर्ताओं को अद्यतन को धक्का देने के बाद अजीब त्रुटियां मिल रही हैं। मैं सत्रों को स्टोर करने के लिए सक्रिय रिकॉर्ड पर जाने पर विचार कर रहा हूं लेकिन सोच रहा था कि मैं रेलवे को कैसे बताता हूं कि सत्र दूसरे डेटाबेस में हैं?रेल ने सक्रियरेकॉर्ड

तो यदि मैं एप 1 डीबी में एआर के माध्यम से सत्र स्टोर करता हूं तो अन्य सभी ऐप्स कैसे जानते हैं कि सत्रों को कहां देखना है?

उत्तर

9

रेल निश्चित रूप से समर्थन डेटाबेस सत्र संग्रहण करता है।

config/environment.rb में, टिप्पणी हटाएं

# config.action_controller.session_store = :active_record_store 

\ actionpack-2.2.2 जांच \ lib \ action_controller \ सत्र \ active_record_store.rb पता चलता है कि सीजीआई :: सत्र :: ActiveRecordStore :: सत्र से विरासत ActiveRecord :: बेस।

तो 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) 

एक config में परिभाषित कनेक्ट उपयोग करने के लिए कहने के लिए सक्षम होना चाहिए/database.yml


उदाहरण के लिए, config/database.yml में जोड़ें:

sessions_development: 
    adapter: mysql 
    host: otherserver 
    username: sessions_user 
    password: 123ABC 
    database: sessions 

config के अंत में जोड़ें/environment.rb

CGI::Session::ActiveRecordStore::Session.establish_connection("sessions_#{RAILS_ENV}") 
+1

रेल 3 के लिए अमान्य, यह है: 'ActiveRecord :: SessionStore :: Session.establish_connection' –

0

सत्र कॉन्फ़िगरेशन के लिए रेल दस्तावेज़ (http://api.rubyonrails.org/classes/ActionController/SessionManagement/ClassMethods.html#M000312) कहता है कि ये केवल विकल्प हैं: http://api.rubyonrails.org/classes/ActionController/Base.html#M000523। चूंकि डेटाबेस का उपयोग करने के लिए एक विकल्प सूचीबद्ध नहीं है, इसलिए यह संभवतः मौजूद नहीं है।

0

हम आपके प्रश्न पर कुछ स्पष्टीकरण मिल सकता है? क्या आपके पास एकाधिक, अलग, रेल ऐप्स हैं जिन्हें आप एक ही सत्र स्टोर का उपयोग करना चाहते हैं? मैं पूछता हूं क्योंकि आप एसएसओ और एकाधिक ऐप सर्वर का उल्लेख करते हैं।

1

में रेल 2.3

खुला config/initializers/session_store.rb

टिप्पणी हटाएं लाइन ActionController::Base.session_store = :active_record_store

परिवर्तन रेखा है जो लगता है कि :key => '_YOUR_APP_NAME_session'

तो अपने सर्वर को पुनः आरंभ पर कुंजी का मान ।

परिणाम अपने स्टोर बदल जाएगा, और सभी पुराने कुकीज़

संबंधित मुद्दे