场景:
有多个ou,但是他们都有一个cn=admin,这个时候我只想查询其中一个ou下面的cn,而不是所有。如图所示:
话不多说,直接上代码
开发之前,需要把LDAP与spring整合的相关配置弄好,不清楚的可以参考我的上一篇文章
https://blog.csdn.net/weixin_43860634/article/details/123236043
下面上测试类
@Autowired private DirContext dirContext; @Test public void getMemberUid() { System.out.println("第一次调用:pwd = " + searchByAttribute()); } private String searchByAttribute() { try { SearchControls controls = new SearchControls(); controls.setSearchScope(SearchControls.SUBTREE_SCOPE); //这个表示要查询的字段 controls.setReturningAttributes(new String[]{"memberUid"}); //查询指定的ou下面的cn属性 memberUid NamingEnumeration results = dirContext.search("ou=company", "cn=admin", controls); while (results.hasMore()) { SearchResult searchResult = (SearchResult) results.next(); Attribute attrMemberUid = searchResult.getAttributes().get("memberUid"); if (Objects.nonNull(attrMemberUid)) { return attrMemberUid.get().toString(); } } } catch (Exception e) { e.printStackTrace(); } return ""; }
执行结果: