Spring LDAP -一个或多个请求中的多个基础

hxzsmxv2  于 2023-11-16  发布在  Spring
关注(0)|答案(1)|浏览(142)

我需要做一个查询,将搜索所有用户,位于两个不同的OU。
举例来说:

base1: "OU=ou2,OU=ou1"
base2 : "OU=ou3,OU=ou1"

字符串
如何使用LdapTemplate完成此操作?我使用的是 Sping Boot 3.1.1 和Spring Ldap。
我希望能够在一个查询中完成此操作,但我知道这是不可能的。如果我运行两个查询,是否可以合并结果而无需手动重新排序?
非常感谢您的回答!

rjee0c15

rjee0c151#

这是我应用的解决方案(例如,通过Fullname进行搜索):

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);
}

字符串
这显然是不理想的,所以不要犹豫,如果你有更好的解决方案。谢谢。

相关问题