AngularJS获得passportjs策略失败消息

时间:2014-11-05 14:54:10

标签: angularjs node.js mongodb passport.js passport-local

我正在构建一个基于angularJS的应用程序,我在nodeJS后端运行passportjs。 身份验证有效,但错误处理并不像我希望的那样精确。例如,当我查询我的mongoDB并且出现故障时,我会执行以下操作:

节点:

response.send(406, {error: "Email already in use"});

角:

settingsService.saveUserOnServer($scope.settings).then(
     function (user) {
        //Success
      },
      function (response) {
          console.log(response);
          var error = response.data.error;
          $cordovaToast.show(error, 'short', 'bottom');
      });

这将是吐司"电子邮件已在使用"。我想在使用passportjs时具有相同的功能:

// if no user is found, return the message
if (!user)
   return done(null, false, {message: 'No user found'}); 

这是我在角度中得到的回应:

Object {data: "Unauthorized", status: 401, headers: function, config: Object, statusText: "Unauthorized"}

如何检索“未找到用户”'信息?提前谢谢!

1 个答案:

答案 0 :(得分:0)

使用自定义回调修复它:

app.post('/login', function (req, res, next) {
    passport.authenticate('local-login', function (err, user, info) {
        console.log(info);
        if (err) {
            return next(err);
        }

        if (!user) {
            res.send(401, info);
        }
        req.logIn(user, function (err) {
            if (err) {
                return next(err);
            }
            res.send(user);
        });
    })(req, res, next);
});

explanation