यदि आप सत्र . का उपयोग कर रहे हैं आपको एक क्रमबद्ध और अक्रमांकन समारोह के साथ पासपोर्ट प्रदान करना होगा। Redis को एक सत्र स्टोर के रूप में लागू करने से पासपोर्ट को कैसे लागू किया जाता है, इससे कोई लेना-देना नहीं है, यह केवल उस स्थान से संबंधित है जहां सत्र डेटा संग्रहीत है।
पासपोर्ट के साथ सत्र लागू करना
जैसा कि मैंने कहा, सत्रों को काम करने के लिए पासपोर्ट को क्रमबद्ध और deserialize कार्यों को प्रदान किया जाना चाहिए।
क्रमानुसार . का उद्देश्य कार्य किसी भी अनुवर्ती अनुरोध पर उपयोगकर्ता खाते को पुनर्प्राप्त करने के लिए पर्याप्त पहचान संबंधी जानकारी लौटाना है। विशेष रूप से done()
. का दूसरा पैरामीटर विधि सत्र डेटा में क्रमबद्ध जानकारी है ।
deserialize आपके द्वारा प्रदान किए जाने वाले फ़ंक्शन का उद्देश्य उपयोगकर्ता प्रोफ़ाइल को उस पहचान जानकारी के आधार पर वापस करना है जिसे सत्र के लिए क्रमबद्ध किया गया था ।
सत्र पर चर्चा करने वाले अनुभाग में पासपोर्ट गाइड का उदाहरण यहां दिया गया है:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
उपरोक्त उदाहरण में passport.serializeUser()
एक फ़ंक्शन प्रदान किया जाता है जो दो पैरामीटर लेता है, उपयोगकर्ता प्रोफ़ाइल (user
) और एक कॉलबैक फ़ंक्शन (done
) कॉलबैक फ़ंक्शन पहचान जानकारी (user.id
.) के दूसरे पैरामीटर के रूप में लेता है , लेकिन यदि आप mongoDB का उपयोग कर रहे हैं तो यह user._id
. हो सकता है ) डेटाबेस से खाते को पुनर्प्राप्त करने के लिए आवश्यक है। इसे प्रत्येक प्रमाणित अनुरोध पर बुलाया जाएगा और सत्र डेटा में पहचान की जानकारी संग्रहीत करता है (चाहे वह कुकी या आपके रेडिस स्टोर में हो)।
passport.deserializeUser()
एक फ़ंक्शन प्रदान किया जाता है जो दो पैरामीटर भी लेता है, पहचान करने वाली जानकारी (id
) और फिर से एक कॉलबैक फ़ंक्शन (done
) पिछले अनुरोध (user.id
. में सत्र डेटा के लिए क्रमांकित की गई जानकारी की पहचान करने वाली जानकारी है ) यहां कॉलबैक फ़ंक्शन के लिए उपयोगकर्ता प्रोफ़ाइल की आवश्यकता होती है क्योंकि यह दूसरा पैरामीटर है, या प्रोफ़ाइल को पहले पैरामीटर के रूप में पुनर्प्राप्त करने में कोई त्रुटि उठाई गई है। User.findById()
फ़ंक्शन डेटाबेस में उपयोगकर्ता प्रोफ़ाइल के लिए एक लुकअप फ़ंक्शन है। इस उदाहरण में user
ऑब्जेक्ट एक नेवला मॉडल का एक उदाहरण है जिसमें findById()
. है समारोह।
passport.deserializeUser()
. को प्रदान किया गया फंक्शन पासपोर्ट मिडलवेयर द्वारा कहा जाता है, passport.session()
उपयोगकर्ता प्रोफ़ाइल को संग्रहीत करने के लिए मार्ग प्रबंधन से पहले (user
) से req.user
।
Redis को एक सत्र स्टोर के रूप में लागू करना
रेडिस का उपयोग करने का उद्देश्य सत्र डेटा सर्वर पक्ष को संग्रहीत करना है, इसलिए केवल डेटा संग्रहीत क्लाइंट पक्ष सत्र आईडी है। दोबारा, यह इस बात से स्वतंत्र है कि आपने पासपोर्ट कैसे कार्यान्वित किया है, पासपोर्ट परवाह नहीं है कि सत्र डेटा कहाँ संग्रहीत किया जा रहा है जब तक आपने अपने ऐप में सत्र समर्थन जोड़ा है। स्टैक ओवरफ्लो पर यह प्रीविओस प्रश्न रेडिस को कार्यान्वित करने के तरीके को संबोधित करता है