我正在使用Spring LDAP 1.3.0使用Java訪問內部LDAP服務器的庫,但我遇到了一個麻煩事情:如何獲取內部屬性LDAP的任何結構?例如,我如何獲得用戶的成員的屬性?使用Spring LDAP獲取內部屬性
我曾經搜索了很多,但沒有找到有關使用Spring LDAP的任何內容。 任何想法都將非常受歡迎。謝謝。
我正在使用Spring LDAP 1.3.0使用Java訪問內部LDAP服務器的庫,但我遇到了一個麻煩事情:如何獲取內部屬性LDAP的任何結構?例如,我如何獲得用戶的成員的屬性?使用Spring LDAP獲取內部屬性
我曾經搜索了很多,但沒有找到有關使用Spring LDAP的任何內容。 任何想法都將非常受歡迎。謝謝。
它也適用於odmManager。喜歡的東西
DistinguishedName dn = new DistinguishedName("The path your are searching in");
SearchControls searchControls = new SearchControls();
searchControls.setReturningObjFlag(true);
searchControls.setReturningAttributes("your attributes, as an array of strings");
return odmManager.findAll(User.class, dn, searchControls);
我用這個來得到「createTimestamp」領域....
正如你在評論說UserAttributeMapper是你的朋友!
如果用戶有多個「的memberOf」:
static List<List<String>> getPersonGroupsByAccountName(String accountName){
EqualsFilter filter = new EqualsFilter("sAMAccountName", accountName);
return ldap.search(DistinguishedName.EMPTY_PATH,filter.encode(),new AttributesMapper(){
public Object mapFromAttributes(
javax.naming.directory.Attributes attrs)
throws javax.naming.NamingException {
List<String> memberof = new ArrayList();
for (Enumeration vals = attrs.get("memberOf").getAll(); vals.hasMoreElements();) {
memberof.add((String)vals.nextElement());
}
return memberof;
}
});
我敢肯定有一個更好的方式來做到這一點,但它的工作原理。
謝謝!在所有帖子的搜索結果中,這是唯一對我有用的。 +1。 – BillFromHawaii 2014-10-21 16:42:52
我很高興這對你有幫助! – fdelsert 2014-10-21 18:52:38
我用它來獲取領域,如「createTimestamp」或「pwdChangedTime」, 和UserContextMapper你可以參考資源:http://docs.spring.io/spring-ldap/docs/1.3.x-SNAPSHOT/reference/htmlsingle/
ldapTemplate.lookup(dn, new String[] {"*", "+"}, new UserContextMapper());
我找到了一種方法,這是非常簡單的。示例: _getLdapTemplate()。search(「dc = MY_COMPANY,dc = com,dc = br」,「(&(objectClass = person)(uid = USER_UID))」,SearchControls.SUBTREE_SCOPE,new String [] {觀察:在這段代碼中,** UserAttributeMapper **只是我自己實現的** org.springframework.ldap.core.AttributesMapper **。 – 2012-01-04 18:25:02