Пожалуйста, у меня есть паспорт установки ldapauth, который отлично работает со всеми параметрами, проблема в том, что имя пользователя или пароль неверны, он не выполняет дальнейшую проверку функции обратного вызова. Он просто останавливается. Из-за этого я не могу дать обратной связи пользователям, чтобы указать, что на самом деле неправильно. Есть ли какая-то подсказка, что мне не хватает? Это структураПаспорт-ldapauth не может выполнить проверку обратного вызова
passport.use('ldapStudent', new LdapStrategy({
usernameField: 'username',
passReqToCallback:true,
server: {
url: '..........',
bindDn: '.............',
bindCredentials: '..........',
searchBase: '..............',
searchFilter: '.............',
searchAttributes: ['givenName','sn'],
tlsOptions: {
ca: [fs.readFileSync('./ssl/server.crt', 'utf8')]
}
}
},
function (req, user, done) {
//now check from the DB if user exist
if(user){
//check if user email exist;
User.findOne({'EmailAddress': user}, function (err, userdata) {
// In case of any error, return using the done method
if (err)
return done(err);
//user exist redirect to home page and send user object to session
if (userdata) {
//userActivity(PostActivity);
console.log(userdata);
return done(null, userdata);
}else {
//new user, add them to the user model
var newUser = new User();
newUser.EmailAddress = req.body.username,
newUser.JoinedDate = Date.now(),
newUser.UserType = 'Student'
newUser.save(function (err, result) {
if (err) {
console.log('Error in Saving NewUser: ' + err);
} else {
console.log(result);
var PostActivity = {
ActivityName: req.res.__('Student Joined'),
ActivityDate: Date.now(),
UserID: result._id,
UserIP: (req.header('x-forwarded-for') || req.connection.remoteAddress) + ' Port: ' + req.connection.remotePort
};
userActivity(PostActivity);
console.log('User Registration successful');
return done(null, newUser, req.flash('SuccessMessage', req.res.__('You have been successfully Registered')));
}
})
}
});
}else{
return done(null, false, req.flash('ValidationError', req.res.__('Wrong password and/or email address')));
}}));
Это где я на самом деле проделайте Войти
router.post('/login', passport.authenticate('ldapStudent', {
successRedirect: '/',
failureRedirect: '/userlogin',
failureFlash: true
}));
код работает хорошо, так же, как я ожидаю, параметры для объекта опции LDAP намеренно опущены. Проблема в том, что учетные данные пользователя не верны, проверка обратного вызова не выполняется вообще, и поэтому я не могу вернуть флэш-сообщение, чтобы пользователь знал, что происходит