2011-10-12 12 views
13

मैं ऑनलाइन गाइड पढ़कर रेल सीख रहा हूं (रेल v2.3 के लिए)। गाइड बहुत अच्छा है, हालांकि, मेरे लिए एक भ्रम है, यह है:रेल v2.3: सत्र और कुकीज़ के बीच अंतर

एक अध्याय रेल के Session बताता है और एक और अध्याय रेल के Cookies बताता है। स्पष्टीकरण अलग-अलग समझना आसान है, लेकिन जब दोनों की तुलना करें, तो मेरे जैसे पाठक सत्र और कुकीज़ के बीच महत्वपूर्ण अंतर नहीं देखते हैं। विशेष रूप से किस स्थिति सत्र के तहत उपयोग किया जाना चाहिए और किस स्थिति में कुकीज़ का उपयोग किया जाना चाहिए?

इसके अलावा, सत्र अध्याय में, कुकीस्टोर की एक अवधारणा है, कुकीस्टोर और कुकीज़ के बीच क्या अंतर है?

क्या कोई मुझे इनको समझा सकता है?

उत्तर

22

सत्र & कुकीज दोनों में दो या दो से अधिक अनुरोधों (http में) के बीच में कुछ जानकारी (जैसे: http में) को स्टोर करने की क्षमता रखने की क्षमता है, जो अन्यथा स्टेटलेस हैं।

लेकिन सत्र एक निश्चित अवस्था से संबंधित एक निश्चित अवस्था से संबंधित एक अमूर्त अवधारणा से अधिक है: इसमें जो जानकारी शामिल है उसे एक सर्वर साइड फ़ाइल में, एक रेडिश हैश में डेटाबेस में संग्रहीत किया जा सकता है या एक कुकी में

कुकीज हमेशा छोटी टेक्स्ट फ़ाइल नेविगेटर्स को अनुरोधों के बीच कुछ लगातार डेटा स्टोर करना पड़ता है ... लेकिन क्लाइंट पक्ष पर कुछ डेटा असुरक्षित हो सकता है इसलिए यही अक्सर एन्क्रिप्टेड होता है। लेकिन यह सच है कि सत्र सत्र के साथ ओवरलैप हो सकता है।

टीएल; डीआर: अस्थायी डेटा रखने की अमूर्त अवधारणा सत्र। कुकीज इसे करने का एक (सामान्य) तरीका है।

6

मेरे लिए मुख्य अंतर यह है कि सर्वर पर संग्रहीत सत्र डेटा, जबकि कुकीज़ क्लाइंट (ब्राउज़र) पर संग्रहीत होती है।

तो आप सत्र से डेटा पर भरोसा कर सकते हैं। कुकी से जानकारी को छेड़छाड़ की जा सकती है, चोरी हो सकती है, और इस प्रकार गंभीर उपयोग के लिए भरोसा नहीं किया जाना चाहिए (उदाहरण के लिए सही पहुंच के लिए)।

दूसरा बिंदु, कुकीज़ का सीमित आकार है, और केवल टेक्स्ट-आधारित हैं। आप सत्र में कई जटिल वस्तुओं (लेकिन स्मृति समाप्ति से सावधान रहें) में स्टोर कर सकते हैं, और आपको प्रत्येक अनुरोध पर वापस क्लाइंट में स्थानांतरित करने की आवश्यकता नहीं है।

+1

ये कुकी-आधारित सत्र ग्राहक पक्ष पर मौजूद हैं और उनका डेटा एन्कोड किया गया है। – secretlm

7

कुकी एक ब्राउज़र में संग्रहीत एक छोटी पाठ फ़ाइल है।

एक सत्र "उपयोग में" होने की स्थिति की अवधारणा है, और उस राज्य में इसके साथ जुड़े डेटा हो सकते हैं। रेल कुकीज़ के साथ सत्रों का ट्रैक रखता है, और आपको संबंधित डेटा के लिए अलग-अलग संग्रहण चुनने देता है और उसी session इंटरफ़ेस के साथ इसका उपयोग करने देता है।

CookieStore का मतलब है कि सभी सत्र जानकारी कुकी के अंदर ही संग्रहीत होती है। आप जहां उचित हो वहां विभिन्न अन्य स्टोर का उपयोग करना चुन सकते हैं, और यह अभी भी आपके session एक्सेसर विधियों के साथ उपलब्ध होगा।

सत्र के अतिरिक्त, आप उपयोगकर्ता के ब्राउज़र पर जानकारी संग्रहीत करने के लिए अन्य कुकीज़ सेट कर सकते हैं। ये सत्र से बंधे नहीं हैं और उन्हें स्वतंत्र रूप से सेट, एक्सेस और हटाया जा सकता है।

उदाहरण 1, एक सत्र में एक लॉग-इन उपयोगकर्ता के खरीदारी की टोकरी भंडारण:

session[:embarassing_products] = ['ooh', 
            'naughty', 
            'lucky_im_using_activerecord_store', 
            'only_the_session_id_is_in_the_cookie', 
            'other_data_arent_in_the_browser'] 

खरीदारी की टोकरी उपयोगकर्ता के सत्र के लिए संरक्षित है। ब्राउज़र विंडो बंद होने पर, सत्र समाप्त होने पर, या जब कोई निश्चित समय गुजरता है, तो सत्र समाप्त हो सकता है।

उदाहरण 2, एक कुकी में अपने डोमेन के लिए एक ब्राउज़र के अंतिम भाषा वरीयता को याद:

cookie[:lang] = 'en-US' 

यह जानकारी कुकी ही अंदर संग्रहित है। जब तक कुकी समाप्त हो जाती है या हटा दी जाती है (आपके द्वारा या उपयोगकर्ता द्वारा), यह ब्राउज़र के अंदर रहता है।

3

और आम तौर पर सत्र तब तक जारी रहता है जब तक कि उपयोगकर्ता अपने ब्राउज़र को बंद नहीं कर देता। यह सामान्य लॉग इन के लिए उपयोगी है। जबकि यदि आपको सत्रों के बीच बने रहने के लिए जानकारी की आवश्यकता होती है तो आप लंबी अवधि के साथ कुकी का उपयोग कर सकते हैं, उदाहरण के लिए ब्राउज़र को पुनरारंभ करने के बाद भी 'मुझे याद रखें' ध्वज।

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