2013-08-18 52 views
1

成功注册用户时,我目前看到一个大部分为空的页面,其顶部为文本undefined. Redirecting to /app退出同步服务器响应

更新:我还应该提及,表单提交后,我被重定向到/ users。所以/用户我看到上面提到的文字。

我认为这是因为req.redirect调用在user.save回调中,但我不确定修复是什么。

我正在使用猫鼬作为ORM。

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); 
});