在Ldap.js中搜索

时间:2014-08-07 10:56:16

标签: javascript node.js ldap

我正在尝试在我的node.js代码中使用Ldap.js的搜索方法。但它不起作用。这是我的代码:

searchFunc : function (){
            console.log('inside search');
            client.bind('cn=Manager,dc=foo,dc=com', kredito231, function(err) {
                if (err) {
                    console.log(err);
                    client.unbind();
                    return;
                }

                var opts = {
                    filter: (('Email=*@foo.com'))
                } ;
                 //This search works correct:
                //client.search( 'cn=x,ou=users' + ',' + 'dc=foo,dc=com', function(err,res){
                //This one doesn't work. But everything is done according api
                client.search('dc=foo,dc=com', opts, function(err, res) {
                    res.on('searchEntry', function(entry) {
                        console.log('hit');
                        console.log('entry: ' + JSON.stringify(entry.object));
                    });
                    res.on('searchReference', function(referral) {
                        console.log('referral: ' + referral.uris.join());
                    });
                    res.on('error', function(err) {
                        console.log('searchFailed') ;
                        console.error('error: ' + err.message);
                    });
                    res.on('end', function(result) {
                        console.log('4') ;
                        console.log('status: ' + result.status);
                    });
                });

            });

        }

当我使用dn name的搜索方法时,它返回正确的对象及其属性(res.on('searchEntry', function(entry)部分已执行,因为它可以在Ldap中找到记录)。但是当我使用上面定义的opt client.search('dc=foo,dc=com', opts, function(err, res)时,它总是转到分支4:res.on('end', function(result)并且永远不会返回错误状态0。

API documentation of Ldap

1 个答案:

答案 0 :(得分:1)

这对dc=foo,dc=com不起作用,因为LDAP目录中的该条目没有属性Email,因此您的过滤器不匹配。 LDAP目录中的条目'cn=x,ou=users,dc=foo,dc=com'可能具有此属性,这就是它工作的原因。