Spring LDAP FAQ

Operational Attributes

How do I remove an operational attribute by using context.removeAttributeValue()?

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

基本上有两种方法可以做到这一点:

  • 使用需要属性名称作为参数的搜索或查看方法,如 LdapTemplate#lookup(Name, String[], ContextMapper)。然后使用 `ContextMapper`执行返回 `mapFromContext()`中提供的 `DirContextAdapter`的实现。

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