代码之家  ›  专栏  ›  技术社区  ›  Jed Schneider

使用LDAP查询系统中的所有用户

  •  0
  • Jed Schneider  · 技术社区  · 15 年前

    我可以通过LDAP连接到甚至创建新记录,并且可以通过使用通配符条目来过滤结果来返回查询。

    假设我创建了一个过滤器来查找以三个9开头的cn:

      filter = Net::LDAP::Filter.eq("cn", "999*")
      @connection.search(:base => "cn=Manager, dc=foo, dc=bar, dc=biz", 
                         :filter  => filter)
    

    假设我创建了相同的过滤器,但只请求了19个,那么查询将失败并返回false

      filter = Net::LDAP::Filter.eq("cn", "9*")
      @connection.search(:base => "cn=Manager, dc=foo, dc=bar, dc=biz", 
                         :filter  => filter)
    

    如果我只是要求 "cn", "*"

    2 回复  |  直到 15 年前
        1
  •  0
  •   Jed Schneider    15 年前

    因此,这个问题的简短答案是,这一切都取决于您的模式是如何设置的。如果您正在设置一个LDAP模式,则需要有多组具有各种cn(公共名称)标识符的记录,例如 cn=activeUsers cn=inactiveUsers

        2
  •  0
  •   timurb    15 年前

    我认为您对LDAP服务器上的搜索操作设置的时间限制有问题。

    如果您有一个非常大的搜索,需要花费很多时间,LDAP服务器会返回一个错误'超过时间限制',并且没有数据。

    在这种情况下,Ruby Ldap会引发一个异常Ldap::resultorror。但是我不知道netldap是如何工作的。

    尝试提高LDAP服务器的时间限制,或使用更严格的搜索筛选器,如“(&(cn=9*)(有效=TRUE))'。用活动用户的条件替换此处的“active=TRUE”。