Passport.js ne parvient pas à sérialiser l'utilisateur

Je suis en utilisant passport.js pour Google, Facebook et Twitter uniquement les logins.

Node.js v0.8.19 avec express.js 3.1.0, et passportjs version 0.1.16.
(passeport-facebook - 0.1.5, twitter - 0.1.4 passeport-goolge-oauth 0.1.5 )

Tout fonctionne bien pendant un certain temps, après une heure ou deux de l'application en cours d'exécution passport.js les arrêts de la sérialisation de l'utilisateur sur la req.session de l'utilisateur.

Facebook et google sont de la réception de la signification complète des données à partir de leurs propres api

passport.use(new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: "http://localhost:3000/auth/facebook/callback"
  },
  function(accessToken, refreshToken, profile, done) {
      var temp = {} 
      temp.name = profile.displayName
      temp.id = profile.id
      console.log(temp)
      return done(null, temp);
}));

La console.journal d'ici imprimer correctement id d'utilisateur et le nom, cependant après l'appel de

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});

Sérialiser et désérialiser sont prises à partir du passeport-facebook exemple.

L'utilisateur de ne pas être attaché à la req.de l'utilisateur.

Twitter n'est jamais loin, après le retour à l'url de callback, twitter donne l'erreur:

Error: failed to find request token in session
[03/11 23:28:24 GMT]     at Strategy.OAuthStrategy.authenticate            

Remarque: ces échecs produire seulement après une période de temps, le travail correctement pendant un certain temps. C'est pourquoi je pense qu'il peut être un problème de mémoire, comme Im enregistrement de la session en mémoire au lieu d'une cooke.

C'est mon express configuration de l'application

app.configure(function(){
  app.set('port', process.env.PORT || 8080);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieSession({ secret: 'tobo!', cookie: { maxAge: new Date(Date.now() +     3600000), }}));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

J'ai regardé la liste de diffusion, etc, mais je ne pouvais pas trouver quelque chose correspondant à ce problème.
J'ai vérifié sur mon localhost et sur un nodejitsu serveur. Tout fonctionne pendant un certain temps puis échoue.

source d'informationauteur Eoin Murray

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *