我正在尝试实现一个普通的登录和注册模块,并且在理解完成的功能时遇到了困难。 here是我认为负责完成功能的那一行。现在,我想做的就是返回相应的消息,例如是否出现服务器错误。

app.post('/user/auth/login', passport.authenticate('local-login'), function(req, res) {
    console.log("Login Request Successful");
    if(req.user){
        res.status(200).send(JSON.stringify({
            'msg' : "Successfully logged in"
        }));
    }
    else{
        res.status(400)
    }
    //console.log(req.user);
});

这是在登录Passport后将用户对象附加到请求模块的情况。
但是如何区分服务器错误和身份验证失败错误

这是我的身份验证中间件。
passport.use('local-login', new LocalStrategy({
    passReqToCallback: true
}, function(req, username, password, done) {

    Users.findOne({
        'emailId': username
    }, function(err, user) {
        if (err)
            return done(err);
        if (!user)
            return done(null, false);
        else if (passwordHash.verify(password, user.password)) {
            console.log("User is verified");
            req.session.save();
            return done(null, user);

        } else
            return done(null, false);
    });
}));

基本上,我需要访问done()函数中的消息。我怎么做?

运作方式(例如,如果我输入了错误的密码)是我在浏览器中收到的未授权消息。这意味着在某处将response.data字段设置为Unauthorized。与其相反,我想知道何时出现错误并想发送我的自定义消息。

最佳答案

我不知道你是什么意思



,但是您可以很好地完成回调中在中为消息提供附加对象

if (!user) {
    return done(null, false, {
                message: 'Unknown user or invalid password'
    });
}
if (!user.authenticate(password)) {
    return done(null, false, {
                message: 'Unknown user or invalid password'
    });
}

09-17 15:32