对于常规身份验证,可通过failureFlash获得“密码错误”消息
app.post('/login',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login',
failureFlash: true })
);
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
但是,如果我使用自定义回调,如何访问该“密码不正确”消息并将其显示给用户?因为自定义回调似乎只检查(!user)。我需要自定义回调,因为我正在通过ajax登录,因此无法进行重定向。
app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.status(401).send({"ok": false}); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return return res.send({"ok": true});
});
})(req, res, next);
});
该消息info
位于您的自定义回调处理程序中的参数中,可以非常轻松地访问并发送给用户。
从另一方面来说,我不会指定用户名或密码是登录失败的原因。使用这种响应,很容易测试哪些用户名存在,然后仅关注密码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句