我使用passport.js在我的节点js app登录时验证用户身份。所以我也使用了快速框架和mongo db。
这是我的路线:
router.post('/login',
passport.authenticate('local'),
function(req, res, err) {
var query = {
'username': req.user.username
};
var update = {
last_login_date: Date.now()
};
var options = {
new: true
};
User.findOneAndUpdate(query, update, options, function(err, user) {
if (err) {
res.json(err);
} else {
res.json('Welcome ' + req.user.username);
}
});
});
这是我的护照代码:
passport.use(new LocalStrategy(
function(username, password, done) {
User.getUserByUsername(username, function(err, user) {
if (err) throw err;
if (!user) {
return done(null, false, {
message: 'User does not exist'
});
}
User.comparePassword(password, user.password, function(err, isMatch) {
if (err) throw err;
if (isMatch) {
return done(null, user);
} else {
return done(null, false, {
message: 'Invalid password'
});
}
});
});
}));
因此,当用户使用正确的凭据登录时,我会打印出以下内容:
Welcome 'username'
但是,在以下情况中,我的代码不打印自定义消息:
密码用户名响应应该是: INCORRECT CORRECT未经授权的密码无效 CORRECT INCORRECT未授权用户不存在 INCORRECT INCORRECT未授权用户不存在
根据passport.js文件:
默认情况下,如果身份验证失败,Passport将以401响应 未经授权的状态,以及任何其他路由处理程序将不会 调用
但是,您可以使用自己的自定义回调消息而不是未经授权的消息,这似乎对我不起作用。
任何帮助将不胜感激!