[英]Iterate LDAP Search Result
我對Java LDAP API不太熟悉。 我在這里想要實現的是查詢一個OU下的所有組以及每個組下的用戶列表。
就像是
Group_1
g1_member_1
g1_member_2
g1_member_3
Group_2
g2_member_1
g2_member_2
等等
我正在使用以下代碼片段。 不知道我應該如何迭代搜索結果。
String[] attrs = {"dn","cn","member"};
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
controls.setReturningAttributes(attrs);
NamingEnumeration<SearchResult> results = lContext.search(ou, "cn=*", controls);
while (results.hasMore()){
SearchResult result = results.next();
System.out.println(result.getNameInNamespace());
}
當前,當我打印result.getNameInNamespace()
,我得到了dn。 我對cn以及每個cn的成員都感興趣。
我應該在這里進行迭代搜索嗎? 對於返回的每個組,我是否會再次為用戶發起新搜索? 難道沒有辦法在一個查詢中全部得到嗎?
能夠通過以下更改進行操作。
String[] attrs = {"dn","cn","member"};
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
controls.setReturningAttributes(attrs);
NamingEnumeration<SearchResult> results = lContext.search(ou, "(&(objectClass=group))", controls);
while (results.hasMore()){
SearchResult result = results.next();
System.out.println(result.getNameInNamespace());
Attributes attributes = result.getAttributes();
System.out.println("DN "+result.getNameInNamespace());
System.out.println("CN "+attributes.get("cn"));
System.out.println("MEMBER "+attributes.get("member"));
System.out.println("**********************");
}
遍歷member屬性以分別處理每個用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.