使用spring LdapQueryBuilder获取用户列表

时间:2018-04-10 10:37:14

标签: spring-ldap

我们使用spring ldap在活动目录中执行用户操作(获取,更新,删除)。

我们要求如果我们在活动目录中有usergroup(testusergroup),那么我们需要从该组中获取所有用户。否则,我们需要从域中获取所有用户。 将用户组置于活动目录中不是必需的。

我使用下面的代码来获取用户。

如果组存在:

LdapQuery userQuery = LdapQueryBuilder.query().where("objectClass").is("user").and(LdapQueryBuilder.query().where("objectCategory").is("person"))
      .and(LdapQueryBuilder.query().where("memberOf").is(userGroupDN));

如果没有小组:

 LdapQuery userQuery = LdapQueryBuilder.query().where("objectClass").is("user").and(LdapQueryBuilder.query().where("objectCategory").is("person"));

此代码完全符合我的要求。 但我想减少代码重复,因为我在多个地方都有这种查询。

我试过以下。

LdapQuery query = LdapQueryBuilder.query().where("objectClass").is("user").and(LdapQueryBuilder.query().where("objectCategory").is("person"))

如果组存在:

query = query.and(LdapQueryBuilder.query().where("memberOf").is(userGroupDN));

它显示我这样的错误(方法和(ContainerCriteria)未定义类型LdapQuery)

任何人都可以帮我这个。

1 个答案:

答案 0 :(得分:1)

经过分析后找到了解决这个问题的方法。我们在这里张贴可能会帮助某人

LdapQuery query = LdapQueryBuilder.query().where("objectClass").is("user").and(LdapQueryBuilder.query().where("objectCategory").is("person"));

query = query.and(LdapQueryBuilder.query().where("memberOf").is(userGroupDN));

如果我们这样做,它将不允许,因为LdapQuery没有任何与添加条件标准或容器标准相关的方法。

所以我们将其更改为如下所示。

ContainerCriteria criteria = LdapQueryBuilder.query().where("objectClass").is("user").and(LdapQueryBuilder.query().where("objectCategory").is("person"));
criteria = criteria..and(LdapQueryBuilder.query().where("memberOf").is(userGroupDN));