我们使用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)
任何人都可以帮我这个。
答案 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));