2015-08-25 2 views
1

Ниже приведена часть метода my/authenticate, который находит пользователя с данными username и password.Только улавливатель успеха - AngularJS

User.findOne({ 
     username: req.body.username, 
     password: req.body.password 
    }, function(err, user) { 
     if (err) { 
      res.json({ 
       type: false, 
       "status": "401", 
       "data": "Incorrect email/password" 
      }); 
     } else { 
      if (user) { 
       console.log("token"); 
       res.json(generateToken(user)); 
      } else { 
       res.json({ 
        type: false, 
        "status": "401", 
        "data": "Incorrect email/password" 
       }); 
      } 
     } 
    }); 

Когда нет таких username или password, при условии, внутри if(err) никогда не срабатывает.

Во-вторых, когда я вызываю этот метод из моего кода углового-js, независимо от success/error, называется только успех.

login: function (username, password) { 
    return $http.post('http://localhost:8888/login', { 
      username: username, 
      password: password 
    }); 
} 

Моего контроллер код вызова:

AutheService.login(username, password).success(function(response) { 
      console.log(response); // error message as well as success comes here 
     }).error(function(data, status){ 
      console.log(data, status); 
    }) 
+0

Какую версию AngularJS вы используете? Эта проблема очень знакома с тем, с чем я столкнулся раньше. – yvesmancera

+0

2 возможности. (1) Ваш 401 недействителен, поскольку он не включает поле заголовка WWW-Authenticate, как и должно. (2) ошибки 401 не вызывают функцию ошибки. Попробуйте 403 Forbidden или 404 Not Found вместо этого просто посмотреть, работают ли они. – Mike

+0

@yvesmancera: 1.2.0 – Shane

ответ

2

Вы должны реагировать с фактическим кодом ошибки на вашей стороне сервера. Я предполагаю, что вы используете expressJS и после того, как смотреть на их документах, вы можете приковать свой ответ, как res.status(401).json(...):

User.findOne({ 
    username: req.body.username, 
    password: req.body.password 
}, function(err, user) { 
    if (err) { 
     res.status(401).json({ 
      type: false, 
      "status": "401", 
      "data": "Incorrect email/password" 
     }); 
    } else { 
     if (user) { 
      console.log("token"); 
      res.json(generateToken(user)); 
     } else { 
      res.status(401).json({ 
       type: false, 
       "status": "401", 
       "data": "Incorrect email/password" 
      }); 
     } 
    } 
}); 
Смежные вопросы