Je souhaite écrire une API REST avec NodeJS + Restify et PassportJS pour l'authentification. Lorsque l'utilisateur se connecte, je génère un sessionId et le stocke dans une session que je crée moi-même.req.user is undefined
var Passport = require('passport');
var PassportBearerStrategy = require('passport-http-bearer').Strategy;
// Authentication
Passport.use(new PassportBearerStrategy(function(sessionId, cb) {
Auth.getSession(sessionId, function(userId){
cb((!!userId), { userId: userId }, userId);
});
}));
server.get(
'/user',
Passport.authenticate('bearer'),
function(req, res, next){
console.info(req.user ); // undefined
respond(res, {});
return next();
}
);
Tout fonctionne, sauf que dans le soufflet de fonction, req.user
est undefined
. Je lis, que vous devez activer la session. Mais j'ai déjà mis en place ma propre session, je n'en ai pas besoin d'autre.
Tout ce dont j'ai besoin est que, si je dis cb(true, user)
, il arrive dans la fonction ci-dessous.
Y at-il un moyen de résoudre ce problème?
Je n'ai jamais utilisé cette stratégie, seulement la stratégie locale. Sur local, vous devez avoir une fonction sérialiser et désérialiser l'utilisateur. C'est la fonction de désarchivage qui vous donne l'utilisateur qui sera plus tard accessible via req.user. Ne manquez-vous pas cette fonction? – yBrodsky
@yBrodsky, Vous avez raison, ces fonctions sont manquantes. Je les ai ajouté exactement comme décrit ici: https://stackoverflow.com/questions/27637609/understanding-passport-serialize-deserialize Mais req.user est encore indéfini. – TSM