Ниже приведена часть метода 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);
})
Какую версию AngularJS вы используете? Эта проблема очень знакома с тем, с чем я столкнулся раньше. – yvesmancera
2 возможности. (1) Ваш 401 недействителен, поскольку он не включает поле заголовка WWW-Authenticate, как и должно. (2) ошибки 401 не вызывают функцию ошибки. Попробуйте 403 Forbidden или 404 Not Found вместо этого просто посмотреть, работают ли они. – Mike
@yvesmancera: 1.2.0 – Shane