passportjs自定义回调200

时间:2014-08-06 03:33:23

标签: node.js angularjs express passport-local

我正在为我的客户端使用angularjs和jade模板。并且节点和服务器端表达。我最近添加了护照身份验证,并且在使用有效凭据尝试登录时,本地策略正常工作。这是我遇到问题的错误案例。我已经实现了自定义回调以将我的错误消息冒泡回客户端。现在我收到错误消息,但状态在某处设置为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?我究竟做错了什么?对不起,我是节点和角度的相对新手,所以任何帮助都会非常感激。我知道我不理解一些关键点,我只是无法弄清楚是什么。谢谢!

1 个答案:

答案 0 :(得分:0)

它是res.status(401),而不是res.status = 401res.status()是一个函数。