2013-08-19 7 views
11

के बजाय मेरे एप्लिकेशन को उपयोगकर्ताओं के लिए अपने ब्राउज़र में अलग-अलग टैब में अलग-अलग खातों में लॉग इन करने की आवश्यकता है (हम विशेष रूप से क्रोम को लक्षित करते हैं)। चूंकि रेल सत्र जानकारी संग्रहीत करने के लिए कुकीज का उपयोग करता है, जब उपयोगकर्ता लॉग इन होता है, तो वे ब्राउज़र में सभी टैब पर लॉग इन होते हैं। मैं ActiveRecord सत्र स्टोर विधि का उपयोग कर रहा हूं, लेकिन सत्र के लिए आईडी को कुकी के रूप में भी सहेजा जाता है।एचटीएमएल 5 सत्र में स्टोर्स एक्टिव रिकार्ड सत्र स्टोर कुकी

ऐसा लगता है कि HTML5 के सत्र स्टोरेज तंत्र का उपयोग करने में कोई समाधान है, जो उस टैब या विंडो के दायरे में सीमित है जिसे उपयोगकर्ता लॉग इन किया गया है। ऐसा लगता है कि मुझे बस सत्र की जानकारी सत्र में सहेजने के लिए सीधी रेल है, कुकीज़ की बजाय स्टोरेज। लेकिन मुझे इस पर कोई जानकारी नहीं मिल सकती है।

मान लीजिए कि रेल स्टोर में ऐसा करने के लिए सत्र स्टोर को कॉन्फ़िगर करने का कोई तरीका नहीं है, क्या ActiveRecord सत्र बचत तंत्र को ओवरराइड करना संभव है? इस बारे में जानकारी देखने के लिए कि इस बारे में जानकारी कैसे प्राप्त करें?

+1

क्या आपको इस प्रश्न का उत्तर मिला? – Marklar

उत्तर

-1

अब आप कुकी-आधारित सत्र स्टोर को प्रारंभकर्ता के माध्यम से कॉन्फ़िगर करते हैं, शायद कॉन्फ़िगर/प्रारंभकर्ता/session_store.rb में। रेल 3 में सत्र स्टोर मिडलवेयर का एक टुकड़ा है, और कॉन्फ़िगरेशन विकल्प को config.session_store:

आपका :: Application.config.session_store: cookie_store,: key => '_session '

आप हैश में इच्छित अतिरिक्त विकल्प डाल सकते हैं: कुंजी, उदाहरण के लिए

Your::Application.config.session_store :cookie_store, { 
    :key =>   '_session_id', 
    :path =>   '/', 
    :domain =>  nil, 
    :expire_after => nil, 
    :secure =>  false, 
    :httponly =>  true, 
    :cookie_only => true 
} 
+0

मैं यहां सत्र स्टोर को कॉन्फ़िगर कर रहा हूं और ActiveRecord सत्र स्टोर का उपयोग कर रहा हूं। हालांकि मैं इसे कुकी के बजाय HTML5 सत्र स्टोरेज में सहेजने के लिए कैसे प्रबंधित करूं? –

1

कुकीज़ के विपरीत, सत्रस्टोर प्रविष्टियों को प्रतिक्रिया शीर्षकों के साथ नहीं बनाया जा सकता है, और अनुरोध हेडर में स्वचालित रूप से शामिल नहीं होते हैं। यह क्लाइंट-साइड जावास्क्रिप्ट पर sessionStorage/localStorage- आधारित प्रमाणीकरण के प्रबंधन के लिए बहुत सारे वर्कलोड रखता है। सभी प्रमाणीकृत पहुंच जावास्क्रिप्ट एक्सएचआर अनुरोधों के माध्यम से होनी चाहिए जो स्पष्ट रूप से प्रमाणीकरण टोकन शामिल करें।

यदि आप चाहते हैं कि उपयोगकर्ता कई समवर्ती सत्र प्राप्त कर सके, और आप अपनी साइट को SPA के रूप में नहीं बनाना चाहते हैं, तो आपको कुकीज़ के साथ वैकल्पिक दृष्टिकोण लेना होगा।

कुकीज को अलग-अलग उप-स्थानों में मजबूर करने के लिए एकाधिक डोमेन का उपयोग करना एक तरीका होगा। एक वाइल्डकार्ड DNS रिकॉर्ड सेट करें और उपसर्ग के बावजूद सभी मिलान अनुरोधों को स्वीकार करने के लिए अपने वेब सर्वर को कॉन्फ़िगर करें। उदाहरण के लिए, उपयोगकर्ता डिफ़ॉल्ट रूप से www.yoursite.com पर हो सकते हैं। आप 'नया सत्र बनाएं' लिंक प्रदान करेंगे जो एक यादृच्छिक सबडोमेन में एक नया टैब खुलता है, उदा। 1234abcd.www.yoursite.com। यदि आप SSL का उपयोग कर रहे हैं, तो यह समस्या पैदा कर सकता है; वाइल्डकार्ड एसएसएल प्रमाण पत्र अधिक महंगा हो जाते हैं।

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

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