3

特にNet-ldapgemを使用してユーザーとコンピューターを検索するためのより良い方法はありますか?

これが私が現在ユーザーだけを獲得するためにしなければならないことです。

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の結合フィルター機能を使用できます。

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がわかっている場合は、フィルターを使用して'(objectClass=person)'、「person」をobjectClassに置き換えることができます。ほとんどの実装では、「person」または。'person'など から継承するobjectClassを使用し'inetOrgPerson'ます。フィルタ'(cn=*)'を使用すると、ほとんどの場合、人物ではないエントリが取得されます。

使ってみてくださいFilter.eq("objectClass","person")

于 2011-06-23T14:30:05.240 に答える