繁体   English   中英

ldapTemplate.search在searchControles上返回空列表

[英]ldapTemplate.search returns empty list on searchControles

我正在尝试获取用户的详细信息。 提供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时是否要遵循任何特定条件?

在此处输入图片说明

如果未指定SearchControls ,则LdapTemplate.search()将使用其defaultSearchScope ,默认情况下为SearchControl#SUBTREE_SCOPE

如果你通过自己的SearchControls对象, LdapTemplate.search()将使用searchScope是whithin您定义的SearchControls

SearchControls ctls= new SearchControls(); 但是,将searchScope设置为SearchControls#ONELEVEL_SCOPE ,因此您的搜索将仅找到属于搜索库的直接子项的条目。

简而言之,您通常希望创建一个SearchControls对象,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM