我使用以下代码进行删除过程:
public void delete(Person p) {
Name dn = buildDn(p);
ldapTemplate.unbind(dn);
}
但是使用unbind()
方法,它会删除所有属性,但我想只删除LDAP中的特定属性,例如人员的角色。
答案 0 :(得分:0)
对于属性修改,您应使用DirContextAdapter
,如reference documentation中所述。适用于您的要求的部分将是第3.2.2节(更新);要删除属性值,您应该使用removeAttributeValue
。
答案 1 :(得分:0)
有三种模式:
你应该使用MOD_REPLACE
>>> mod_attrs = [ (ldap.MOD_DELETE, 'cn','Francis Bacon') ]
>>> l.modify_s('uid=francis,ou=users,dc=example,dc=com', mod_attrs)
(103, [])
>>>
这将从cn属性中仅删除属性值Francis Bacon。如果不存在此值,则将引发NO_SUCH_ATTRIBUTE异常。否则,该值将被丢弃。
答案 2 :(得分:0)
如果你不知道字段值,那么使用None作为这样的值(以@Anouar Mokhtari为例):
mod_attrs = [ (ldap.MOD_DELETE, 'cn', None) ]
l.modify_s('uid=francis,ou=users,dc=example,dc=com', mod_attrs)