我们正在尝试使用ldap_search功能检索结果。启用分页搜索时,我们期望在结果中使用PagedResultsControl。但是,结果不包含任何控制对象。
我们有OpenLDAP实例。我们正在使用ldapjs进行分页搜索。我们可以为ApacheDS执行相同的代码,并且可以成功捕获cookie。
const fs = require('fs');
var client = ldap.createClient({
url: 'ldap://<ldap_host>:389'
});
console.log('client created.');
client.bind('<Bind DN>', '<Bind Password>', function(err) {
if (err) {
console.log('client.bind error', err);
} else {
console.log('bind is success');
var opts = {
filter: '(objectClass=*)',
scope: 'sub',
attributes: [],
attrsOnly: true,
paged: {
pageSize: 100,
pagePause: true
}
};
client.search('<Search Base>', opts, function(err, res) {
if (err) {
console.log('error', err);
} else {
var count = 1;
res.on('searchEntry', function(entry) {
console.log('page 1 entry ' + count++ + ' : ' + JSON.stringify(entry.object));
});
res.on('page', function(result, cb) {
console.log('page end', result.controls);
fs.writeFile("./cookie1", result.controls[0].value.cookie, function(err) {//Expecting PagedResultControl with cookie
if (err) {
return console.log(err);
}
console.log("The file was saved!");
client.unbind(function(err) {
if (err) {
console.log('error unbind : ', err);
} else {
console.log('unbind is success');
}
});
});
});
res.on('error', function(err) {
console.error('error: ' + err.message);
});
res.on('end', function(result) {
console.log('result: ' + result);
client.unbind(function(err) {
if (err) {
console.log('error unbind : ', err);
} else {
console.log('unbind is success');
}
});
});
}
});
}
});
我们期望Cookie result.controls[0].value.cookie
如下所示。
请提出建议。