以下是我的/ authenticate方法的一部分,该方法会找到具有给定username
和password
的用户。
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)
内的条件永远不会触发。
其次,当我从angular-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 :(得分: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"
});
}
}
});