Node.js passportjs自定义回调200

Node.js passportjs自定义回调200,node.js,angularjs,express,passport-local,Node.js,Angularjs,Express,Passport Local,我在客户端使用angularjs和jade模板。服务器端的node和express。我最近添加了passport身份验证,当尝试使用有效凭据登录时,本地策略工作正常。我遇到的问题是错误案例。我已经实现了自定义回调,以使错误消息冒泡返回到客户端。现在我得到了错误消息,但是状态被设置为200,而不是我期望的401 // login route app.post("/api/login", function(req, res, next) { passport.authenticate("lo

我在客户端使用angularjs和jade模板。服务器端的node和express。我最近添加了passport身份验证,当尝试使用有效凭据登录时,本地策略工作正常。我遇到的问题是错误案例。我已经实现了自定义回调,以使错误消息冒泡返回到客户端。现在我得到了错误消息,但是状态被设置为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);
});
这是提交登录请求的angular控制器:

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?我做错了什么?对不起,我是一个相对新手节点和角度,所以任何帮助将不胜感激。我知道我没有理解一些关键点,我只是不知道是什么。谢谢

它是
res.status(401)
,而不是
res.status=401

res.status()
是一个函数。

只是想在我将服务器端更改为如下样子时添加:app.post(“/api/login”,passport.authenticate(“local”);然后我得到401状态,但当然看不到我的错误消息。错误只是说“未经授权”哦,天哪,我知道这一点。非常感谢。这就是为什么我不应该在晚上编码。不客气。我听到了,但在大白天编码太容易了:)