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

问题描述 投票:0回答:1

我需要进行一个查询来搜索位于两个不同 OU 中的所有用户。

例如:

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

如何使用 LdapTemplate 做到这一点?我正在使用 Spring Boot 3.1.1 和 Spring Ldap。

我希望能够在单个查询中完成此操作,但我知道这是不可能的。如果我运行两个查询,是否可以合并结果而无需手动重新排序?

非常感谢您的回答!

spring spring-boot ldap spring-ldap spring-data-ldap
1个回答
0
投票

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

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

这显然并不理想,所以如果您有更好的解决方案,请不要犹豫。谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.