Spring LDAP 常见问题解答

操作属性

如何使用context.removeAttributeValue()删除操作属性?

默认情况下,DirContextAdapter仅读取可见属性。这是因为操作属性仅在明确请求时由服务器返回,并且 Spring LDAP 无法知道要请求哪些属性。这意味着DirContextAdapter没有填充操作属性。因此,removeAttributeValue没有任何效果(因为从DirContextAdapter的角度来看,它一开始就不存在)。

基本上有两种方法可以解决这个问题

  • 使用将属性名称作为参数的搜索或查找方法,例如LdapTemplate#lookup(Name, String[], ContextMapper)。然后使用一个ContextMapper实现,该实现将在mapFromContext()中返回提供的DirContextAdapter

  • 直接使用LdapTemplate#modifyAttributes(Name, ModificationItem[]),手动构建ModificationItem数组。