मैं एक बुनियादी व्यवस्थापक प्रमाणन सेट कर रहा हूं, जब उपयोगकर्ता के प्रवेश, मैं authcallback में इस फ़ंक्शन को कॉल करें:NodeJS एक्सप्रेस req.session भंडारण नहीं मेरी चर
function checkAdmin (req) {
Admin.findOne({ user : req.user.id },function (err, admin, count){
req.session.isAdmin = true;
console.log("session : %j",req.session);
})
}
और फिर मैं कर
res.redirect('/')
सूचकांक नियंत्रक के अंदर कोड:
console.log("session : %j",req.session);
res.render('index', { title: 'Accueil',message: req.flash('info') });
और यही मैं कंसोल में मिलता है:
session : {"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path"
:"/"},"passport":{"user":"5079832df1e9a6485e000001"},"flash":{},"isAdmin":true}
session : {"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path"
:"/"},"passport":{"user":"5079832df1e9a6485e000001"},"flash":{}}
मुझे नहीं पता कि सत्र isAdmin मान क्यों संग्रहीत नहीं करता है।
मैं कह रही है कि app.use (app.router) जगह एक कारण हो सकता है कुछ अन्य प्रश्न पढ़ा है लेकिन मुझे क्या करना:
app.use(cookieParser)
app.use(express.session({store: session_store }));
app.use(passport.initialize())
app.use(passport.session())
// routes should be at the last
app.use(app.router)
यह एक तरह से बेवकूफ होना चाहिए मुझे लगता है ..
हो सकता है कि कुछ इस तरह मदद कर सकते हैं पुनर्जीवित करने के लिए: req.session.regenerate https : //github.com/senchalabs/connect/issues/681 – alditis
तो इसका मतलब यह होगा कि हर बार जब मैं सत्र में एक चर बदलना/जोड़ना चाहता हूं, तो मुझे req.session.regenerate का उपयोग करना होगा? –
शायद आपको चेकएडमिन फ़ंक्शन के अंदर रीडायरेक्ट करना चाहिए। –