我需要进行一个查询来搜索位于两个不同 OU 中的所有用户。
例如:
base1: "OU=ou2,OU=ou1"
base2 : "OU=ou3,OU=ou1"
如何使用 LdapTemplate 做到这一点?我正在使用 Spring Boot 3.1.1 和 Spring Ldap。
我希望能够在单个查询中完成此操作,但我知道这是不可能的。如果我运行两个查询,是否可以合并结果而无需手动重新排序?
非常感谢您的回答!
这是我应用的解决方案(例如,通过全名搜索):
public List<User> findAllByFullname(String fullname) {
LdapQuery query1 = getFullnameQuery(User.BASE1, fullname);
LdapQuery query2 = getFullnameQuery(User.BASE2, fullname);
List<User> users1 = ldapTemplate.find(query1,User.class);
List<User> users2 = ldapTemplate.find(query2,User.class);
List<User> users = new ArrayList<>();
users.addAll(users1);
users.addAll(users2);
Collections.sort(users, Comparator.comparing(User::getFullname));
return users;
}
private LdapQuery getUsernameQuery(String base, String username) {
return LdapQueryBuilder.query().base(base).where("sAMAccountName").is(username);
}
这显然并不理想,所以如果您有更好的解决方案,请不要犹豫。谢谢你。