J'ai une configuration Passport pour authentifier les utilisateurs stockés dans mongodb. Semble fonctionner correctement: l'authentification réussit/échoue de manière appropriée et les variables de session sont définies. Cependant, obtenir Passport pour vérifier une session échoue. Quelque chose semble être tout à fait faux dans le fait que les instructions console.log que j'ai ajoutées au rappel deserializeUser
ne voient jamais la lumière du jour. Je suppose que mon problème est lié à deserializeUser
jamais appelé. Quelqu'un est-il capable de diagnostiquer mon faux pas?PassportJS deserializeUser n'a jamais été appelé
// 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);
};
avec ce qui suit dans app.js:
app.post('/session', passport.CreateSession); // restify better
app.del('/session', passport.DestroySession);
app.get('/images', passport.CheckSession, routes.images);
Jared - merci pour votre aide. Oui, j'ai app.use (passport.session()); dans app.js –
Ceci est le noeud 0.8.0, expresse 2.5.10, et le dernier passeport, btw. –
Hmm, et je suppose que vous avez vos sessions correctement configurées et persistées aussi?Si oui, je ne vois rien d'évident. Voici ma suggestion: 1. Essayez d'exécuter sous le noeud 0.6.x, pour voir s'il y a une incompatibilité quelque part avec 0.8. 2. Poster un runnable, copie-n-coller l'essentiel, et je vais le courir et voir ce que je peux trouver. –