2011-03-10 14 views
7

के साथ सत्र आईडी पुन: उत्पन्न करें मैं एक नोड.जेएस सर्वर का उपयोग कर रहा हूं और मैं कनेक्ट फ्रेमवर्क के साथ विकास कर रहा हूं। मैं सत्र निर्धारण से बचने के लिए दिए गए अंतराल के बाद एसआईडी को पुन: उत्पन्न करने की कोशिश कर रहा हूं। req.session.regenerate नामक एक विधि है, जो दस्तावेज़ों के अनुसार, बस यही करना चाहिए।नोडजेस कनेक्ट

«सत्र को पुनर्जीवित करने के लिए बस विधि आह्वान, एक बार एक नई सिड और सत्र उदाहरण पूरा req.session में प्रारंभ हो जाएगा»

उदाहरण कोड:

req.session.regenerate(function(err){ 
    // will have a new session here 
}); 

उपर्युक्त विधि को कॉल करने के बाद, मैं req.sessionID के मान की जांच करता हूं, केवल यह पता लगाने के लिए कि मान befor जैसा ही है ई।

यदि मैं sessionq को req.session.regenerate के भीतर से प्राप्त करने का प्रयास करता हूं और इसे टर्मिनल पर लिखता हूं तो मुझे एक नया एसआईडी मिलता है, जो और भी परेशान होता है ~ IE आप केवल एसआईडी को केवल दायरे के भीतर उत्पन्न करना चाहते हैं वापस कॉल करें? यदि मैं मान को वैरिएबल वैरिएबल को असाइन करता हूं, तो इसका मान अपरिभाषित है।

मुझे एहसास है कि यह वास्तव में कुछ स्पष्ट है कि मैं अनदेखा कर रहा हूं।

किसी भी मदद की सराहना की जाती है।

+1

आप कहां/req.sessionID' की जांच कर रहे हैं? हो सकता है कि जिस कोड के साथ आप जांच कर रहे हैं वह वास्तव में पुनर्जागरण फ़ंक्शन चलाने से पहले जांच कर रहा है। –

+0

मैं कुछ स्थानों पर जांच कर रहा हूं। इससे पहले, भीतर से, और मूल्यों की तुलना करने के लिए पुनर्जन्म के बाद। मैं req.session.id के मान को टर्मिनल पर भेजने के लिए console.log का उपयोग करता हूं। और उनमें कोई फर्क नहीं पड़ता। –

+0

क्या आपने इसे ठीक किया? मेरे पास एक और मामूली समस्या है: http://stackoverflow.com/questions/5646905/why-do-i-have-to-create-a-local-reference-to-a-request-session-object-in -nodejs – Lewis

उत्तर

1

सभी संभावना में आपकी समस्या को इस मुद्दे से संबंधित है:

https://github.com/senchalabs/connect/pull/263

किसी भी मामले में, व्यवहार आपके द्वारा बताई गई ठीक उसी रूप में के अंक में प्रकाशित है।

1

पुनर्जन्म समारोह के कॉलबैक में प्रतिक्रिया वापस भेजें। चूंकि सत्र पुनर्जन्म एसिंक है, जब आप क्लाइंट पर वापस आते हैं तो उसके पास अभी भी पुराना सत्र होगा।

req.session.regenerate(function(err) { 
           req.session.myid = "myvalue"; 
           res.simpleJSON(200, status); 
         }); 
संबंधित मुद्दे