Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ldapjs搜索不起作用_Javascript_Ldap_Ldapjs - Fatal编程技术网

Javascript Ldapjs搜索不起作用

Javascript Ldapjs搜索不起作用,javascript,ldap,ldapjs,Javascript,Ldap,Ldapjs,我正在尝试使用“search”方法在ldapjs中搜索,但它对我不起作用 以下是终端的回应: > Result is: SearchResponse { messageID: 2, protocolOp: 101, controls: [], log: Logger { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, _isS

我正在尝试使用“search”方法在ldapjs中搜索,但它对我不起作用

以下是终端的回应:

> Result is: SearchResponse {
  messageID: 2,
  protocolOp: 101,
  controls: [],
  log: 
   Logger {
     domain: null,
     _events: {},
     _eventsCount: 0,
     _maxListeners: undefined,
     _isSimpleChild: true,
     _level: 30,
     streams: [ [Object] ],
     serializers: 
      { req: [Function: req],
        res: [Function: res],
        err: [Function: err] },
     src: false,
     fields: 
      { name: 'ldapjs',
        component: 'client',
        hostname: 'nichita-Lenovo-ideapad-500-15ISK',
        pid: 29307,
        clazz: 'Client' } },
  status: 0,
  matchedDN: '',
  errorMessage: '',
  referrals: [],
  connection: 
   TLSSocket {
     _tlsOptions: 
      { pipe: undefined,
        secureContext: [Object],
        isServer: false,
        requestCert: true,
        rejectUnauthorized: true,
        session: undefined,
        NPNProtocols: undefined,
        requestOCSP: undefined },
     _secureEstablished: true,
     _securePending: false,
     _newSessionPending: false,
     _controlReleased: true,
     _SNICallback: null,
     servername: null,
     npnProtocol: undefined,
     authorized: true,
     authorizationError: null,
     encrypted: true,
     _events: 
      { finish: [Function: onSocketFinish],
        _socketEnd: [Function: onSocketEnd],
        secure: [Function],
        data: [Function: onData],
        close: [Object],
        end: [Function: onEnd],
        error: [Function: onSocketError],
        timeout: [Function: onTimeout] },
     _eventsCount: 8,
     _connecting: false,
     _hadError: false,
     _handle: 
      TLSWrap {
        _externalStream: {},
        fd: 13,
        _parent: [Object],
        _parentWrap: undefined,
        _secureContext: [Object],
        reading: true,
        owner: [Circular],
        onread: [Function: onread],
        writeQueueSize: 1,
        onhandshakestart: [Function],
        onhandshakedone: [Function: bound ],
        onocspresponse: [Function: bound onocspresponse],
        onerror: [Function] },
     _parent: null,
     _host: 'ldap.titanium-soft.com',
     _readableState: 
      ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: [],
        length: 0,
        pipes: null,
        pipesCount: 0,
        flowing: true,
        ended: false,
        endEmitted: false,
        reading: false,
        sync: false,
        needReadable: true,
        emittedReadable: false,
        readableListening: false,
        defaultEncoding: 'utf8',
        ranOut: false,
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null,
        resumeScheduled: false },
     readable: true,
     domain: null,
     _maxListeners: undefined,
     _writableState: 
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        decodeStrings: false,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: false,
        errorEmitted: false },
     writable: true,
     allowHalfOpen: false,
     destroyed: false,
     bytesRead: 28,
     _bytesDispatched: 134,
     _sockname: null,
     _pendingData: null,
     _pendingEncoding: '',
     ssl: 
      TLSWrap {
        _externalStream: {},
        fd: 13,
        _parent: [Object],
        _parentWrap: undefined,
        _secureContext: [Object],
        reading: true,
        owner: [Circular],
        onread: [Function: onread],
        writeQueueSize: 1,
        onhandshakestart: [Function],
        onhandshakedone: [Function: bound ],
        onocspresponse: [Function: bound onocspresponse],
        onerror: [Function] },
     server: undefined,
     _requestCert: true,
     _rejectUnauthorized: true,
     read: [Function],
     _consuming: true },
  attributes: [],
  notAttributes: [],
  sentEntries: 0 }
以下是代码:

const ldap = require('ldapjs');
const ldapOptions = {
    url: 'ldaps://example.com',
    port: '363'
};

const client_admin = ldap.createClient(ldapOptions);

let searchUser = () => {
    client_admin
        .bind('cn=admin,dc=example,dc=com', 'secret', (err) => {
            if (err) return console.log('Error is', err);
        });

    let opts = {
        filter: 'cn=admin'
    }

    client_admin.search('dc=example,dc=com', opts, (err, res) => {
        res.on('searchEntry', (entry) => {
                console.log('Entry', JSON.stringify(entry.object));
        });

        res.on('searchReference', (referral) => {
            // console.log('Referral', referral);
        });

        res.on('error', (err) => {
            // console.log('Error is', err);
        });

        res.on('end', (result) => {
            console.log('Result is', result);
        })
    })
};
已成功尝试添加新用户。但我没有得到任何回应。
如何使用此方法获取任何数据?

在创建LDAP客户端后的第一步,您需要使用用户名和密码进行绑定。所以,我猜你使用的用户名是不正确的

这对我有用:(这里显示的值当然不同):


在创建LDAP客户机后的第一步,您需要使用用户名和密码进行绑定。所以,我猜你使用的用户名是不正确的

这对我有用:(这里显示的值当然不同):


//下面是我得到结果的方式:查看entries变量

//搜索选项

let searchAllUsersOptions = {
    attributes: [
      "dc",
      "createTimestamp",
      "modifyTimestamp",
      "pwdPolicySubentry"
    ],
    scope: "sub",
    filter: "(objectClass=person)"
  };

  // SET DN
  let searchAllUsersDN = "dc=example,dc=com";

  //THIS IS HOW YOU GET THE RESULTS OUT OF THE CLIENT SEARC
  let entries = [];

  client.search(searchAllUsersDN, searchAllUsersOptions, (err, res) => {

    if (err) return reject(err);

    res.on('searchEntry', function (entry) {
      var r = entry.object;
      entries.push(r);
      //console.log('search find one user');
      //console.log(entries); 
    });

    res.on('error', function (err) {
      reject(err);
    });

    res.on('end', function (result) {
      //resolve(entries);
    });

  });


  router.get('/', (req, res) => {
    res.send(JSON.stringify(entries)  );
  });

//下面是我得到结果的方式:查看entries变量

//搜索选项

let searchAllUsersOptions = {
    attributes: [
      "dc",
      "createTimestamp",
      "modifyTimestamp",
      "pwdPolicySubentry"
    ],
    scope: "sub",
    filter: "(objectClass=person)"
  };

  // SET DN
  let searchAllUsersDN = "dc=example,dc=com";

  //THIS IS HOW YOU GET THE RESULTS OUT OF THE CLIENT SEARC
  let entries = [];

  client.search(searchAllUsersDN, searchAllUsersOptions, (err, res) => {

    if (err) return reject(err);

    res.on('searchEntry', function (entry) {
      var r = entry.object;
      entries.push(r);
      //console.log('search find one user');
      //console.log(entries); 
    });

    res.on('error', function (err) {
      reject(err);
    });

    res.on('end', function (result) {
      //resolve(entries);
    });

  });


  router.get('/', (req, res) => {
    res.send(JSON.stringify(entries)  );
  });

那么,您是在搜索用户还是在添加?您的代码的哪一部分失败了?预期行为和实际行为?我正在搜索。我尝试在ldap中添加新用户,但成功了。但当我尝试搜索时,它是错误的,那么是哪一个呢,你是在搜索用户还是在添加?您的代码的哪一部分失败了?预期行为和实际行为?我正在搜索。我尝试在ldap中添加新用户,但成功了。但当我尝试搜索时,它是错误的。谢谢。在谷歌搜索时发现了你的答案。过滤器:“(&(objectClass=*)(CN=“+username+”)”,在这方面对美赞臣来说很有吸引力。在谷歌搜索时发现了你的答案。过滤器:“(&(objectClass=*)(CN='+username+')”,对我来说非常有用