में सीरियलइज़ और डिसेरियलाइज कॉल करें, मुझे पता होना चाहिए कि परीक्षण के लिए मैंने सीरियललाइज और डेसेरियलाइज को कब लिखा है, मैंने alert(user.id)
डाला है लेकिन कोई कार्रवाई नहीं हुई है। जब पासपोर्ट जेएस
process.nextTick()
function(req, email, password, done)
, कॉल करने के लिए
- कहाँ से
user
वस्तुpassport.serializeUser(function(user, done){...
में प्राप्त हुआ है:मैं कुछ पूछना चाहते हैं (नाम, ईमेल, पासवर्ड, पता, मोबाइल)।
यहाँ कोड है: -
//config/passport.js
var LocalStrategy = require('passport-local').Strategy;
var User = require('../app/models/user');
module.exports = function(passport) {
passport.serializeUser(function(user, done) {
alert(user.id);//// Here is my testing alert
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use('local-signup', new LocalStrategy({
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
process.nextTick(function() {
User.findOne({ 'local.email' : email }, function(err, user) {
if (err)
return done(err);
if (user) {
return done(null, false, req.flash('signupMessage', 'That email is already taken.'));
} else {
var newUser = new User();
newUser.local.email = email;
newUser.local.password = newUser.generateHash(password);
newUser.save(function(err) {
if (err)
throw err;
return done(null, newUser);
});
}
});
});
}));
}
मेरे पास एक प्रश्न है, जब आप कहते हैं: "passport.initialize() और passport.session() ... वे वे हैं जो serializeUser को req.user पर ** user id को लोड करने का कारण बनते हैं यदि एक धारावाहिक उपयोगकर्ता पाया जाता है सर्वर में (whe n mongodb का उपयोग कर, यदि उपयोगकर्ता mongodb में मौजूद है)। ** "उपयोगकर्ता आईडी कहां से आती है? और जब आप कहते हैं कि" यदि उपयोगकर्ता मोंगोडब में मौजूद है ", तो क्या यह स्वचालित रूप से उपयोगकर्ता मॉडल में दिखता है? –
क्या आपका कोड रीफैक्टर हो सकता है 'if (req.url.match ('/xxx ')) passport.session(); अगला(); ' – NERDYLIZARD