gpt4 book ai didi

java - ldapTemplate.search 在 searchControles 上返回空列表

转载 作者:行者123 更新时间:2023-12-02 13:42:33 36 4
gpt4 key购买 nike

我正在尝试获取用户的详细信息。提供 SearchControls 时,它返回一个空列表。

@Override
public User getUserDetails(String userName) {
SearchControls ctls= new SearchControls();
String [] attrs = {"mail"};
ctls.setReturningAttributes(attrs);

log.info("executing {getUserDetails}");
List<User> list = ldapTemplate.search("","(&(objectClass=person)(mail=josh.nail@gmail.com))",ctls, new UserAttributesMapper());
if (list != null && !list.isEmpty()) {
return list.get(0);
}
return null;
}

如果我们打电话

ldapTemplate.search("","(&(objectClass=person)(mail=josh.nail@gmail.com))", new UserAttributesMapper());

没有搜索控件,它会获取用户详细信息。设置 ReturningAttributes 时是否需要遵循任何特定标准?

enter image description here

最佳答案

如果您不指定 SearchControlsLdapTemplate.search() 将使用其 defaultSearchScope,默认情况下为 SearchControl#SUBTREE_SCOPE

如果您传递自己的 SearchControls 对象,LdapTemplate.search() 将使用您的 SearchControls 中定义的 searchScope .

SearchControls ctls= new SearchControls(); 但是,将 searchScope 设置为 SearchControls#ONELEVEL_SCOPE,因此您的搜索将仅查找符合以下条件的条目:搜索库的直接子级。

长话短说,您通常需要创建一个 SearchControls 对象,如下所示:

SearchControls ctls = new SearchControls();
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String [] attrs = {"mail"};
ctls.setReturningAttributes(attrs);

关于java - ldapTemplate.search 在 searchControles 上返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42664598/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com