3

有没有更好的方法来专门使用 Net-ldap gem 搜索用户和计算机?

这是我目前必须做的才能只获得用户。

results = search :base => @base, :filter => Net::LDAP::Filter.eq("cn", "*")
  @results = Array.new

  results.each do |result|
    @results.push result if result[:objectclass].include? "person" unless result[:objectclass].include? "computer"

似乎会有更好的方法。我在文档中看不到任何明显的东西。

4

2 回答 2

5

您可以使用 net-ldap 的 Join 过滤器功能:

filter = Net::LDAP::Filter.eq("sAMAccountName", "*")
filter2 = Net::LDAP::Filter.eq("objectCategory", "organizationalPerson")

joined_filter = Net::LDAP::Filter.join(filter, filter2)

ldap.search(:base => treebase, :filter => joined_filter) do |entry|
    puts entry.sAMAccountName
end
于 2013-01-03T19:38:08.217 回答
2

如果您知道用于人员的 objectClass,则可以使用 filter '(objectClass=person)',将 'person' 替换为 objectClass。大多数实现将使用 'person' 或继承'person''inetOrgPerson'. 使用过滤器'(cn=*)'很可能会得到不是人的条目。

尝试使用Filter.eq("objectClass","person")

于 2011-06-23T14:30:05.240 回答