Passeport de connexion et la persistance de session

Fond

J'ai une application MOYENNE avec CRUD capacités entièrement testé avec facteur. J'ai essayé de persister connexion pour un certain temps maintenant avec pas de chance. J'ai lu et essayé les

Mais j'ai seulement été en mesure de vous inscrire et vous connecter un utilisateur à ne pas persister de connexion à une session.

Mon Application

Ici est un lien vers le dépôt github (si vous êtes à la recherche pour les dernières modifications vérifier développer direction de)

Ma Compréhension de Auth/Login

Ici est ma compréhension de la connexion de l'utilisateur avec des exemples de code à partir de mon projet et de la capture d'écran du facteur résultats ainsi que les journaux de la console.

Passeport installation

J'ai le texte suivant auth.js fichier, il configs passeport

var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;

module.exports = function(app, user){

  app.use(passport.initialize());
  app.use(passport.session());

  //passport config
  passport.use(new LocalStrategy(user.authenticate()));

  passport.serializeUser(function(user, done) {
    console.log('serializing user: ');
    console.log(user);
    done(null, user._id);
  });

  passport.deserializeUser(function(id, done) {
    user.findById(id, function(err, user) {
      console.log('no im not serial');
      done(err, user);
    });
  });
};

Ce qui est appelé dans le fichier du serveur comme

//code before
var user    = require('./models/user.js');
var auth    = require('./modules/auth.js')(app, user);
//code after

De routage de connexion

Dans mes itinéraires, j'ai le login de la route comme suit

router.post('/login', function(req, res, next) {

  passport.authenticate('local', function(err, user, info) {

    if (err) {
        return next(err);
    }

    if (!user) {
        return res.status(401).json({
            err: info
        });
    }

    req.logIn(user, function(err) {

        if (err) {
            return res.status(500).json({
                err: 'Could not log in user'
            });
        }

        res.status(200).json({
            status: 'Login successful!'
        });

    });
  })(req, res, next);
});

Cette route œuvres testé avec facteur. - Je entrer dans les détails " joe " et "pass" et obtenir la réponse suivante.

Passeport de connexion et la persistance de session

Lorsque cette voie est atteint, nous pouvons également voir dans la console que l'utilisateur est sérialisé.

Passeport de connexion et la persistance de session

Alors que la prochaine?

C'est là que je me suis perdu. J'ai quelques questions.

  1. Est maintenant l'utilisateur dans une session sur mon serveur?
  2. Dois-je envoyer les req.session.passport.user arrière de la client?
  3. Faire j'ai besoin de l'ID de session sur toutes les demandes futures?

Test de la Session

J'ai une deuxième configuration de l'itinéraire pour l'examen de la session il est comme suit

router.get('/checkauth', passport.authenticate('local'), function(req, res){

    res.status(200).json({
        status: 'Login successful!'
    });

});

La partie passport.authenticate('local') (je pense) est là pour tester si l'utilisateur de la session existe avant de donner l'accès à la route, mais je n'obtiens jamais de réponse 200 lorsque je l'exécute, même après un login.

N'cette route s'attendre à une req.session.passport.user passé dans la tête ou comme un argument données sur une requête http qui nécessite auth?

Si j'ai oublié quelque chose ou que je suis de comprendre quelque chose de mal, s'il vous plaît dites-moi, toute entrée est appréciée. Merci à tous.

InformationsquelleAutor Joe Lloyd | 2016-04-07