【发布时间】:2016-02-23 20:31:49
【问题描述】:
我正在尝试实现一个正常的登录和注册模块,但我在理解 done 功能方面遇到了困难。here 是我认为负责 done 功能的行。现在我想做的是返回相应的消息,比如是否有一些服务器错误。
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。相反,我想知道何时出现错误并想发送我的自定义消息。
【问题讨论】:
标签: node.js passport.js passport-local