अवलोकन
Express.js उपयोगकर्ता के ब्राउज़र में एक सत्र आईडी (एक एन्क्रिप्शन हस्ताक्षर के साथ) को संग्रहीत करने के लिए एक कुकी का उपयोग करता है और फिर, बाद के अनुरोधों पर, सर्वर पर संग्रहीत सत्र जानकारी को पुनः प्राप्त करने के लिए उस कुकी के मूल्य का उपयोग करता है। यह सर्वर साइड स्टोरेज एक मेमोरी स्टोर (डिफ़ॉल्ट) या कोई अन्य स्टोर हो सकता है जो आवश्यक तरीकों (जैसे कनेक्ट-रेडिस ) को लागू करता है।
विवरण
Express.js / Connect एक 24-वर्ण Base64 स्ट्रिंग का उपयोग करके बनाता है utils.uid(24)और इसे इसमें संग्रहीत करता है req.sessionID। इस स्ट्रिंग को तब कुकी में मान के रूप में उपयोग किया जाता है।
ग्राहक की ओर
हस्ताक्षरित कुकीज़ हमेशा सत्रों के लिए उपयोग की जाती हैं, इसलिए कुकी मूल्य का निम्न प्रारूप होगा।
[sid].[signature]
जहां [साइड] सेशन है और सत्र मिडलवेयर को इनिशियलाइज़ करते समय प्रदान की गई गुप्त कुंजी का उपयोग करके [साइड] साइन करके [सिग्नेचर] जेनरेट किया जाता है। छेड़छाड़ को रोकने के लिए हस्ताक्षरित कदम उठाया जाता है। यह उपयोग किए जाने वाले गुप्त कुंजी के ज्ञान के बिना [सिड] को संशोधित करने और फिर [हस्ताक्षर] करने के लिए कम्प्यूटेशनल रूप से अलग होना चाहिए। सत्र कुकी अभी भी चोरी और पुन: उपयोग के लिए असुरक्षित है, अगर [साइड] के किसी भी संशोधन की आवश्यकता नहीं है।
इस कुकी का नाम है
connect.sid
सर्वर साइड
यदि कोई हैंडलर मिडलवेयर के बाद आता है cookieParserऔर sessionइसके वेरिएबल तक पहुंच होगी req.cookies। इसमें JSON ऑब्जेक्ट शामिल है जिसकी कुंजी कुकी कुंजी है और मान कुकी मान हैं। इसमें एक कुंजी का नाम होगा connect.sidऔर इसका मूल्य हस्ताक्षरित सत्र पहचानकर्ता होगा।
यहां इस बात का एक उदाहरण है कि एक मार्ग कैसे सेट किया जाए जो हर अनुरोध पर सत्र कुकी के अस्तित्व की जांच करेगा और इसके मूल्य को कंसोल पर प्रिंट करेगा।
app.get("/*", function(req, res, next) {
if(typeof req.cookies['connect.sid'] !== 'undefined') {
console.log(req.cookies['connect.sid']);
}
next(); // Call the next middleware
});
आपको यह भी सुनिश्चित करना होगा कि राउटर ( app.use(app.router)) के बाद cookieParserऔर sessionआपके कॉन्फ़िगर अनुभाग में शामिल है।
निम्नलिखित डेटा का एक उदाहरण है जो Express.js / कनेक्ट द्वारा आंतरिक रूप से संग्रहीत है।
{
"lastAccess": 1343846924959,
"cookie": {
"originalMaxAge": 172800000,
"expires": "2012-08-03T18:48:45.144Z",
"httpOnly": true,
"path": "/"
},
"user": {
"name":"waylon",
"status":"pro"
}
}
userक्षेत्र रिवाज है। बाकी सब सत्र प्रबंधन का हिस्सा है।
इसका उदाहरण एक्सप्रेस 2.5 है।