AngularJS获取passportjs策略失败消息

AngularJS获取passportjs策略失败消息,angularjs,node.js,mongodb,passport.js,passport-local,Angularjs,Node.js,Mongodb,Passport.js,Passport Local,我正在构建一个基于angularJS的应用程序,并在我的nodeJS后端运行passportjs。 身份验证工作正常,但错误处理并不像我希望的那样精确。例如,当我查询我的mongoDB时,有些东西失败了,我会执行以下操作: 节点: 角度: settingsService.saveUserOnServer($scope.settings).then( function (user) { //Success }, function (response

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

节点:

角度:

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"}

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

通过使用自定义回调修复了它:

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

请不要滥用HTTP状态码。406表示不可接受,因为服务器无法根据客户端发送的Accept标头完成请求,请参阅。至于问题本身,你确定通过电线发送的是什么吗?使用调试代理或网络嗅探器检查实际响应,可能有干扰…我正在寻找正确的状态代码,但能够找到正确的1,是否有一个通用的是可以接受的?确实棘手。对于已经在使用的电子邮件,可以选择HTTP 409冲突,但我认为,只有当电子邮件在URL中时才是正确的。另外,WebDAV非常通用的422不可处理实体是一个很好的默认值,我认为服务器可以理解请求,但由于语义原因被拒绝了。非常感谢!我还找到了主要问题的答案。
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);
});