मुझे ऐसा लगता है कि इसे प्रलेखन में कहीं दफन किया जाना है, लेकिन मैं इसे नहीं पा सकता हूं।
आप एक्सप्रेसजेएस में एक सत्र को कैसे बंद या समाप्त या मार सकते हैं (जो भी)?
जवाबों:
सत्र हैंडलिंग अब एक्सप्रेस में नहीं बनाई गई है। यह उत्तर मानक सत्र मॉड्यूल को संदर्भित करता है: https://github.com/expressjs/session
सत्र डेटा साफ़ करने के लिए, बस उपयोग करें:
req.session.destroy();
इस पर प्रलेखन थोड़ा बेकार है। इसे कहते हैं:
सत्र को नष्ट कर देता है, req.session को हटाकर, अगले अनुरोध को फिर से जेनरेट किया जाएगा।
req.session.destroy(function(err) { // cannot access session here })
इसका मतलब यह नहीं है कि वर्तमान सत्र अगले अनुरोध पर फिर से लोड किया जाएगा। इसका मतलब है कि अगले अनुरोध पर आपके सत्र स्टोर में एक साफ खाली सत्र बनाया जाएगा। (संभवतः सत्र आईडी नहीं बदल रही है, लेकिन मैंने इसका परीक्षण नहीं किया है।)
कोई बात नहीं, यह है req.session.destroy();
req.session.destroy();
रूप acidghost किया था।
यह प्रश्न स्पष्ट नहीं हुआ कि किस प्रकार के सत्र स्टोर का उपयोग किया जा रहा है। दोनों उत्तर सही प्रतीत होते हैं।
कुकी आधारित सत्रों के लिए:
से http://expressjs.com/api.html#cookieSession
req.session = null // Deletes the cookie.
रेडिस, आदि आधारित सत्रों के लिए:
req.session.destroy // Deletes the session in the database.
से http://expressjs.com/api.html#cookieSession
कुकी को साफ़ करने के लिए, जवाब देने से पहले सत्र को शून्य करने के लिए निर्दिष्ट करें:
req.session = null
उपयोग,
delete req.session.yoursessionname;
का उपयोग करना req.session = null;
, वास्तव में सत्र उदाहरण को नष्ट नहीं करेगा। सबसे उचित समाधान होगा req.session.destroy();
, लेकिन यह अनिवार्य रूप से के लिए एक आवरण है delete req.session;
।
https://github.com/expressjs/session/blob/master/session/session.js
Session.prototype.destroy = function(fn){
delete this.req.session;
this.req.sessionStore.destroy(this.id, fn);
return this;
};
सत्र को नष्ट कर देता है और req.session संपत्ति को परेशान करेगा। एक बार पूरा हो जाने पर, कॉलबैक लागू किया जाएगा।
↓ सुरक्षित तरीका ↓ ↓
req.session.destroy((err) => {
res.redirect('/') // will always fire after session is destroyed
})
S असुरक्षित तरीका ure ure
req.logout();
res.redirect('/') // can be called before logout is done
req.session.destroy();
ऊपर वाले ने मेरे लिए काम नहीं किया इसलिए मैंने ऐसा किया।
req.session.cookie.expires = new Date().getTime();
वर्तमान समय में कुकी की समाप्ति की समय सीमा निर्धारित करके, सत्र अपने आप समाप्त हो गया।
जैसा कि कई स्थानों पर उल्लेख किया गया है, मैं भी सही ढंग से काम करने के लिए req.session.destroy () फ़ंक्शन प्राप्त करने में सक्षम नहीं हूं।
यह मेरा काम है .. लगता है कि चाल है, और अभी भी req.flash का उपयोग करने की अनुमति देता है
req.session = {};
यदि आप req.session = null को हटाते या सेट करते हैं; , लगता है तो आप req.flash का उपयोग नहीं कर सकते