我正在尝试在我的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。
答案 0 :(得分:1)
这对dc=foo,dc=com
不起作用,因为LDAP目录中的该条目没有属性Email
,因此您的过滤器不匹配。 LDAP目录中的条目'cn=x,ou=users,dc=foo,dc=com'
可能具有此属性,这就是它工作的原因。