1

我正在构建一个基于 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"}

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

4

1 回答 1

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

解释

于 2014-11-05T17:05:41.923 回答