繁体   English   中英

如何使用spring在ldap中执行搜索操作

[英]How to perform search operation in ldap using spring

我想从ldap搜索特定的用户详细信息。 所以我写下了检索用户详细信息的代码,但它返回了用户对象列表。 基本上我只想要人物obejct而不是人物对象列表。 使用ldap模板进行retreiving。 如何修改此代码以便返回person对象?

public void searchByFirstName(String loginId) {

        AndFilter filter = new AndFilter();
        filter.and(new EqualsFilter("objectclass", "Person"));
        filter.and(new EqualsFilter("cn", loginId));
        List list = ldapTemplate.search("", 
            filter.encode(),
            new AttributesMapper() {
                public Object mapFromAttributes(Attributes attrs) throws NamingException        {
                    return attrs.get("sn").get();
                }
            });


}

您正在调用的方法, ldapTemplate.search()始终返回匹配对象的列表。 这是因为它在LDAP服务器上找到符合条件的所有对象。 如果您不确定是否存在与您的loginId匹配的用户,那么您已经使用了正确的方法。 只需检查列表的长度并从返回的列表中检索第一个项目。

要从LDAP获取单个项目,您需要知道LDAP服务器中用户的可分辨名称 (DN)。 DN是LDAP中对象的唯一标识符,如果您要专门查找单个对象,则需要知道这一点。 根据您的LDAP配置,这可能类似于cn=<loginId>,ou=users,dc=yourorg,dc=com

如果可以从loginId构造DN,则可以使用ldapTemplate.lookup(String,AttributesMapper)方法查找单个对象。

暂无
暂无

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

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