PassportJS deserializeUser hat nie angerufen
Ich habe Passport eingerichtet, um Benutzer zu authentifizieren, die in Mongodb gespeichert sind. Scheint gut zu funktionieren: Die Authentifizierung ist erfolgreich / schlägt fehl und die Sitzungsvariablen werden gesetzt. Es schlägt jedoch fehl, Passport zu veranlassen, nach einer Sitzung zu suchen. Irgendetwas scheint in den console.log-Anweisungen, die ich zu den Anweisungen hinzugefügt habe, nicht zu stimmendeserializeUser
Rückruf niemals das Licht der Welt erblicken. Ich gehe davon aus, dass mein Problem damit zusammenhängtdeserializeUser
nie angerufen werden. Kann jemand meinen Fehltritt diagnostizieren?
// Passport configuration
passport.serializeUser(function(user, cb){ cb(null, user.id) });
passport.deserializeUser(function(uid, cb){
console.log("Trying to deserialize user: "+uid);
User.findById(uid, function(err, user){
cb(err, user);
});
});
// auth strategy function
passport.use(new LocalStrategy({usernameField: 'email'},
function(email, pass, done){
User.findOne({email: email}, function (err, user) {
if (err)
return done(err);
if (!user)
return done(null, false, {message: "Couldn't find user"});
var crypted = bcrypt.hashSync(pass, user.salt);
if(user.hashpass != crypted)
return done(null, false, {message: "Bad password"});
return done(null, user);
});
}
));
passport.CreateSession = function (req, res, next) {
passport.authenticate('local', function(err, user, info){
if(err || !user)
return res.json({status: "Failure: "+err});
req.logIn(user, function (err){
if(err)
return res.json({status: "Failure: "+err});
return res.json({status: "Authenticated"});
});
})(req, res, next);
};
mit dem folgenden in app.js:
app.post('/session', passport.CreateSession); // restify better
app.del('/session', passport.DestroySession);
app.get('/images', passport.CheckSession, routes.images);