我正在为我的客户端使用 angularjs 和玉模板。以及服务器端的节点和快递。我最近添加了护照身份验证,并且在尝试使用有效凭据登录时本地策略工作正常。这是我遇到问题的错误案例。我已经实现了自定义回调来让我的错误消息冒泡回客户端。现在我收到错误消息,但状态在某处设置为 200,而不是我期望的 401。
// login route
app.post("/api/login", function(req, res, next) {
passport.authenticate("local", function(err, user, info) {
if (err) {
return next(err);
}
if (user === false) {
res.status = 401;
res.send(info.message);
} else {
res.json({success:"User logged in"});
}
})(req, res, next);
});
这是提交登录请求的角度控制器:
var loginObj = {email: $scope.login.email,
password:$scope.login.password};
$http.post("/api/login", loginObj)
.success(function(data, status) {
console.log("successful login");
console.log("data = " + JSON.stringify(data));
console.log("status = " + status);
})
.error(function(error) {
console.log("error logging in.");
console.log("error = " + JSON.stringify(error));
$scope.error = error;
});
所以,假设我的密码不匹配……我的验证例程中的错误将我的错误消息设置为“密码无效,请重试”。但我在控制台上看到的是:
successful login
data = "Invalid password, please try again."
status = 200
我不会在其他任何地方重置状态。它是如何设置为200的?我究竟做错了什么?对不起,我是节点和角度的相对新手,所以任何帮助都将不胜感激。我知道我不理解一些关键点,我只是不知道是什么。谢谢!