के भीतर एकाधिक पासपोर्ट का उपयोग करना मान लीजिए मुझे एक एक्सप्रेस एप्लिकेशन के भीतर दो अलग-अलग पासपोर्ट की आवश्यकता है (जैसे उपयोगकर्ता & कमरा)। तो मैं दो अलग-अलग वार्स परिभाषित:पासपोर्टजेएस - एक्सप्रेस एप्लिकेशन
var passport = require('passport');
var roomPassport = require('passport');
तो, मैं उन्हें अलग पासपोर्ट रणनीतियों के साथ प्रारंभ:
// required for passport
application.use(session({ secret: 'ilovepassport;-)' })); // session secret
application.use(passport.initialize({ userProperty: "user" }));
application.use(passport.session()); // persistent login sessions
application.use(roomPassport.initialize({ userProperty: "room" }));
application.use(roomPassport.session()); // persistent login sessions
application.use(flash()); // use connect-flash for flash messages stored in session`
:
require('./config/passport')(passport); // pass passport for configuration
require('./config/roompassport')(roomPassport); // pass passport for configuration
अंतिम चरण उन्हें एक्सप्रेस मिडलवेयर के रूप में स्थापित करने के लिए है हालांकि, अगर मैंने ऐसा किया, तो वास्तव में कमरापैसपोर्ट पासपोर्ट ओवरराइड करता है और दो ऑब्जेक्ट्स के बजाय - req.user और req.room, मुझे केवल एक req.room मिल गया है लेकिन इसके साथ शुरू किया गया है उपयोगकर्ता का आधार - सामग्री।
यह उल्लेख करना महत्वपूर्ण है कि प्रत्येक पासपोर्ट (उपयोगकर्ता या कमरा) एक-दूसरे से स्वतंत्र रूप से प्रमाणित हो सकता है, यानी एक परिदृश्य है जहां दोनों ऑब्जेक्ट req.user
और req.room
मौजूद हैं।
इसे कैसे हल करें?
संपादित करें 1
ठीक है, कुछ और घंटे के बाद, ऐसा लगता है, हालांकि मैं पासपोर्ट वस्तुओं को अलग करने, application.use(roomPassport.initialize({ userProperty: "room" }));
की कॉल के बाद है, चीजों को गंदा मिलता है कि - और इस वजह req.login()
विधि पिछले संलग्न पासपोर्ट के साथ काम करता है । तो सही passport.serializeUser
विधि को कॉल करने के बजाय, यह roomPassport.serializeUser
विधि को कॉल करता है।
मेरा अगला प्रश्न - सही विधि को कॉल करने के लिए req.login()
कैसे बनाएं?
धन्यवाद दोस्त, आपने मेरा दिन बचाया! यह मेरी समस्या हल करता है लेकिन पूरी तरह से नहीं। ऐसा लगता है कि मुझे अलग पासपोर्ट सत्र की आवश्यकता होगी, अन्यथा पासवर्ड ऑब्जेक्ट्स एक ही कुकी को ओवरराइड करते हैं। तो मेरा अगला सवाल यह है कि - दो अलग-अलग सत्र कैसे सेट करें (शायद उन्हें नाम दें)? –
मैंने इसे यहां नए प्रश्न के रूप में रखा है http://stackoverflow.com/questions/25898629/passportjs-how-to-make-separate-passport- सत्र –
अरे, मैंने आपकी सलाह का पालन किया और दो अलग-अलग पासपोर्ट कॉन्फ़िगरेशन फ़ाइलों को भी बनाया दो diff स्थानीय रणनीतियों को संभालें। हालांकि जब मैं मूल का उपयोग करके लॉगिन करने का प्रयास करता हूं तो यह "अज्ञात रणनीति स्थानीय-लॉगिन" कहने में त्रुटि उत्पन्न करता है। – codeinprogress