2011-09-07 14 views
5

मैंने सोचा कि वे कुकीज़ में संग्रहीत थे - लेकिन नहीं, कुकीज़ निरीक्षण मुझे कुछ भी नहीं देता है। सत्र उन्हें स्टोर नहीं करते हैं। तो, मैं उन्हें कहां पा सकता हूं?फ्लैश संदेश कहां संग्रहीत हैं?

मुझे इसे सीधे सेट करने की आवश्यकता है (flash हैश के माध्यम से नहीं)।

+1

आपको उन्हें सेट करने की आवश्यकता है लेकिन फ़्लैश var का उपयोग किए बिना। क्या यह भी समझ में आता है? बस यह समझने के लिए कि आप क्या हासिल करना चाहते हैं। – pduersteler

+0

यदि वे कुकीज़ में संग्रहीत किए गए थे तो मैं उन्हें सीधे सेट कर दूंगा: 'कुकीज़ [: फ्लैश] [: नोटिस] = "हैलो वर्ल्ड!"। लेकिन वे कहीं और संग्रहीत हैं। तो सवाल यह है कि: वे कहां संग्रहीत हैं :) – fl00r

+0

रेलगाउड्स से: फ्लैश एक 'सत्र का विशेष हिस्सा' है जिसे प्रत्येक अनुरोध के साथ मंजूरी दी जाती है। और सभी सत्र स्टोर प्रत्येक सत्र के लिए एक अद्वितीय आईडी स्टोर करने के लिए कुकी का उपयोग करते हैं (आपको कुकी का उपयोग करना होगा, रेल आपको यूआरएल में सत्र आईडी पास करने की अनुमति नहीं देगा क्योंकि यह कम सुरक्षित है)। मुझे लगता है कि अगर हम केवल कुकी डेटा स्टोर करने के लिए कुकीस्टोर का उपयोग कर रहे हैं तो फ्लैश कुकीज़ में स्टोर किया जाएगा। आम तौर पर हम केवल कुकीस्टोर का उपयोग करते हैं, इसलिए मुझे लगता है कि फ्लैश संदेश कुकी में कहीं भी होना चाहिए [: सत्र]। ठीक है मैं रेल में नौसिखिया हूँ। अगर मैं ग़लत हूं तो मेरी गलती सुझाएं। – rtcoms

उत्तर

7

वे in your session store संग्रहीत हैं। डिफ़ॉल्ट 2.0 के बाद से डिफ़ॉल्ट कुकी कुकी स्टोर है, लेकिन यह जांचने के लिए कि आप डिफ़ॉल्ट से कुछ और उपयोग कर रहे हैं, config/initializers/session_store.rb में चेक करें।

2

APIdock : ActionController/Flash के अनुसार, यह एक सत्र में संग्रहीत किया जाता है।

ध्यान दें कि यदि सत्र केवल फ़्लैश अक्षम हैं। अब काम करेगा।

फ़्लैश.now का उपयोग करते समय, आपके मान अगले अनुरोध में उपलब्ध नहीं हैं।

+0

मैं आपको http://apidock.com/rails/ActionDispatch/Request/flash से लिंक करने का मतलब मानता हूं, 'एक्शनकंट्रोलर :: फ्लैश' केवल रेल 1.0 में मौजूद है। –

+0

ओह, ठीक है आप – pduersteler

+0

हैं तो आप अपना उत्तर संपादित कर सकते हैं ;-) –

0

मैं एक और विस्तृत उत्तर की तलाश में था, और मैंने इसे जांच के माध्यम से ढूंढ लिया। निम्नलिखित लागू होता है यदि आपकी प्रोजेक्ट पोस्टग्रेज़ डेटाबेस में अपना सत्र संग्रहीत कर रही है।

नोट: आपके ऐप में एक से अधिक डीबी से कनेक्शन हो सकते हैं। मुझे अभी भी यह पता नहीं लगाया गया है कि रेल कैसे निर्धारित करते हैं कि इनमें से किन कनेक्शन का उपयोग करना है। मेरी परियोजना का session_store.rb खाली है।

आपको sessions तालिका में फ़्लैश संदेश मिलेगा। data नामक एक कॉलम है जिसमें बेस 64-एन्कोडेड स्ट्रिंग है।

यदि आप स्ट्रिंग को डीकोड करते हैं, तो आपको एक बाइनरी ब्लॉब मिलेगा जिसमें केवल फ़्लैश संदेश नहीं होंगे (मार्शल वाले रूप में, इसलिए वे किसी भी प्रकार की रूबी ऑब्जेक्ट का प्रतिनिधित्व कर सकते हैं), लेकिन सीएसआरएफ टोकन और कई अन्य चीजें भी ।

पूरे ब्लॉब वास्तव में एक मार्शल हैश टेबल है। इसे Marshal.load के साथ रूबी में अनारक्षित किया जा सकता है, और किसी भी बदलाव के बाद, इसे Marshal.dump के साथ फिर से दिखाया जा सकता है।

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