2012-08-16 8 views
10

सिनात्रा क्रोम पर रीडायरेक्ट के साथ मेरे सत्र को जारी नहीं रख रहा है। यह एक बिल्कुल नया सत्र बना रहा है और मैं अपने पिछले सत्र डेटा खो रहा हूं। कुछ इस तरहसिनात्रा क्रोम पर रीडायरेक्ट के साथ सत्र जारी नहीं रखता

एक उदाहरण (the Sinatra docs के समान) के रूप में, मैं कर रहा हूँ:

enable :sessions 

get '/foo' do 
    session[:user_id] = 123 
    session[:session_id] # "ABC", for example 

    redirect to('/bar') 
end 

get '/bar' do 
    # this is "DEF" when responding to Chrome (wrong), 
    # but "ABC" when responding to Firefox or Safari (right) 
    session[:session_id] 

    # this is nil when responding to Chrome (wrong), 
    # but 123 when responding to Firefox or Safari (right) 
    session[:user_id] 
end 

मैं इस के साथ कैसे विभिन्न ब्राउज़रों एक रीडायरेक्ट के बाद सत्र से निपटने के लिए प्रतिक्रिया करने के लिए कुछ न कुछ है सोच रहा हूँ प्रतिक्रिया। क्या किसी ने इस तरह कुछ देखा है, या सत्रों का उपयोग करते समय इसे हल करने के बारे में कोई विचार है?

अग्रिम धन्यवाद!

+2

साइनेट्रा में डिफ़ॉल्ट सत्र हैंडलिंग कुकीज़ के साथ किया जाता है, इसलिए मुझे लगता है कि क्रोम हैंडल (या हैंडल करने से इंकार कर देता है) रीडायरेक्ट पर सेट-कुकी अनुरोधों के साथ ऐसा कुछ करने के लिए है। सुनिश्चित नहीं है कि आप इससे कैसे निपट सकते हैं, लेकिन पूरी समस्या के आसपास एक आसान तरीका डीबी आधारित सत्रों का उपयोग करना होगा, या रेडिस या कुछ समान स्मृति सत्रों में करना होगा। – Jonah

+0

आपका पर्यावरण क्या है? मैंने बस सत्र भंडारण को समाप्त करने वाली एक समस्या का समाधान किया जो कि ब्याज का हो सकता है, लेकिन यह इस बात पर निर्भर करता है कि यह आपके साथ कहां/कैसे हो रहा है। –

+0

मुझे पर्यावरण के रूप में स्टेजिंग का उपयोग करके एक ही समस्या हो रही थी। –

उत्तर

0

अक्षम करने के लिए सभी कस्टम कुकी मैनेजमेंट एक्सटेंशन क्रोम यदि कोई है तो कोशिश करें। डेवलपर टूलनेटवर्क में चेक हेडर के बाद। 'कुकी:' फ़ील्ड देखना चाहिए। उपयोग रैक :: सत्र :: कुकी,: कुंजी => 'rack.session', : पथ => '/', :

1

अपने मुख्य अनुप्रयोग फ़ाइल को यह जोड़े गुप्त => 'कुछ यादृच्छिक -स्ट्रिंग '

इसके साथ, आप सत्र [' जो भी '] असाइन करने में सक्षम होना चाहिए और इसे अपेक्षित रूप से काम करना चाहिए।

+0

यह मेरे लिए पीसीडीयूनो 3 बी sinatra –

+0

पर काम करता है क्या कोई यह समझा सकता है कि इस मुद्दे को क्यों ठीक करना चाहिए? सिनात्रा दस्तावेज पढ़ना यह कहता है कि इसका उपयोग सत्रों के लिए अतिरिक्त पैरामीटर जोड़ने के लिए किया जा सकता है, लेकिन मुझे यकीन नहीं है कि यह सक्षम करता है: सत्र नहीं है? – Michael

0

मुझे लगता है कि सिर्फ इसलिए कि आप :session_secret सेट नहीं किया, here

0

पर मेरा उत्तर का उल्लेख कर enable :sessions तुम सिर्फ अनुरोध के अनुसार सत्र तक पहुँच प्राप्त करके। सिनात्रा के पास पिछले कॉल (आपके रीडायरेक्ट) के संदर्भ को रखने का कोई तरीका नहीं है क्योंकि इसे एक अन्य अनुरोध के रूप में माना जाता है।

इस प्रकार, लम्बी कहानी कम:

set :session_secret, "SecureRandom.new(10) generated thing" enable :sessions

हमेशा एक रहस्य के साथ enable :sessions का उपयोग करें, अन्यथा आपका सत्र हर बार रैक एक अनुरोध देखता निर्मित किया गया है।

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