2013-08-18 3 views
1

При успешной регистрации пользователя в настоящее время я вижу в основном пустую страницу с текстом undefined. Redirecting to /app наверху.Получение ответа сервера синхронизации

ОБНОВЛЕНИЕ: Я должен также упомянуть, что после отправки формы я перенаправлен/пользователям. Итак, я/пользователи вижу текст, упомянутый выше.

Я думаю, что это связано с тем, что вызов req.redirect находится в обратном вызове user.save, но я не уверен, что такое исправление.

Я использую мангуст для ОРМ.

var User = require('../models/user'); 

module.exports = function(app) { 

    app.post('/users', function(req, res, next) { 
    var user = new User({ 
     email:  req.body.email, 
     password: req.body.password 
    }); 

    user.save(function(err) { 
     if (err) 
     res.send(412, {message: err}); 
     else 
     req.login(user, function(err) { 
      if (err !== undefined) return next(err); 
      res.redirect('/app', { 
      email: user.email, 
      id: user._id 
      }); 
     }); 
    }); 

    }); 
}; 

ответ

2

Оказывается, что вызов req.login должен содержаться в password.authenticate обратного вызова. example на сайте оставили эту часть.

user.save(function(err) { 
    if (err) 
    res.send(412, {message: err}); 
    else 
    passport.authenticate('local', function(err, user) { 
     if (err) { return next(err) } 
     if (!user) { return res.redirect('/login') } 
     req.login(user, function(err) { 
     if (err) { return next(err); } 
     return res.redirect('/app', { email:user.email, id:user._id }); 
     }); 
    })(req, res, next); 
});