Raj*_*aje 2 java ldap spring-ldap
我想从 ldap 搜索特定用户详细信息。所以我写下了以下代码来检索用户详细信息,但它返回用户对象列表。基本上我只想要人对象而不是人对象列表。使用 LDAP 模板检索 IM。我如何修改此代码以使其返回 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();
}
});
}
Run Code Online (Sandbox Code Playgroud)
您调用的方法ldapTemplate.search()始终返回匹配对象的列表。这是因为它正在 LDAP 服务器上查找与您的条件匹配的所有对象。如果您不确定是否loginId存在与您匹配的用户,那么您已经使用了正确的方法。只需检查列表的长度并从返回的列表中检索第一项。
要从 LDAP 中仅获取单个项目,您需要知道LDAP 服务器中用户的专有名称(DN)。DN 是 LDAP 中对象的唯一标识符,如果您要专门查找单个对象,则需要知道这一点。根据您的 LDAP 配置,这可能类似于cn=<loginId>,ou=users,dc=yourorg,dc=com.
如果您可以根据loginId现有的 DN 构造 DN,则可以使用ldapTemplate.lookup(String, AttributesMapper)方法来查找单个对象。
| 归档时间: |
|
| 查看次数: |
24606 次 |
| 最近记录: |