【问题标题】:Getting out of sync server response不同步服务器响应
【发布时间】:2013-08-20 16:56:57
【问题描述】:

在用户成功注册后,我目前看到一个大部分为空的页面,顶部有文字 undefined. Redirecting to /app

更新:我还应该提到,在提交表单后,我被重定向到 /users。所以在 /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
          });
        });
    });

  });
};

【问题讨论】:

    标签: node.js express mongoose passport.js


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      相关资源
      最近更新 更多