2014-09-18 5 views
3

Я создал службу проверки подлинности, используя следующий код в Node.js и ldapjs.ldapjs - запись после ошибки конца

var when = require ('when'); 
var AuthenticationError = require('../errors/AuthenticationError'); 
var SessionManagerService = require('./SessionManagerService'); 

var ldap = require('ldapjs'); 

var client = ldap.createClient({ 
    url: 'ldaps://ad.mycompany.com:636', 
    tlsOptions: {'rejectUnauthorized': false} 
}); 

module.exports = { 

    signIn: function (email, password) { 
     return this.ldapBind(email, password).then(
      function() { 
       return SessionManagerService.createSessionHash({email: email}); 
      } 
     ); 
    }, 

    ldapBind: function (email, password) { 
     var deferred = when.defer(); 
     client.bind(email, password, function(err) { 
      if (err) { 
       deferred.reject (new AuthenticationError('Invalid username and/or password!', 'Authentication.signIn.error')); 
      } else { 
       client.unbind(); 
       deferred.resolve(true); 
      } 
     }); 
     return deferred.promise; 
    }, 

}; 

Когда я впервые аутентифицирую своего пользователя, он работает отлично, но он не срабатывает, начиная со второй попытки. Сообщение об ошибке: 'написать после конца'.

Когда я перезапускаю сервер узла, он работает снова для первой попытки.

Похоже, что что-то висит, но я не знаю что. Есть идеи?

ответ

1

Я решил эту проблему несколько дней назад для создания ldap-клиента каждый раз в функции ldapBind (в вашем случае).

+0

Спасибо, магль, похоже, сейчас работает! :) –