2011-06-22 69 views
1

我想從ldap中搜索特定的用戶詳細信息。所以我寫下下面的代碼檢索用戶的詳細信息,但它返回用戶對象的列表。基本上我只想要人對象不是人物對象列表。爲了使用ldap模板來檢索我。我如何修改此代碼以便返回person對象?如何使用spring在ldap中執行搜索操作

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(); 
       } 
      }); 


} 

回答

4

你調用的方法,ldapTemplate.search()總是返回匹配對象的列表。這是因爲它正在查找與LDAP服務器上的條件相匹配的所有對象。如果您不確定是否存在與您的loginId匹配的用戶,則您已經使用了正確的方法。只需檢查列表的長度並從返回的列表中檢索第一項。

要從LDAP獲取單個項目,您需要知道LDAP服務器中用戶的專有名稱(DN)。 DN是LDAP中對象的唯一標識符,如果要專門查找單個對象,則需要知道這一點。根據您的LDAP配置,這可能類似於cn=<loginId>,ou=users,dc=yourorg,dc=com

如果您可以從loginId構建DN,則可以使用ldapTemplate.lookup(String, AttributesMapper)方法來查找僅一個對象。

+0

謝謝,我會修改代碼.. – Raje