2015-04-12 100 views
0

我使用下面的代码删除过程如何使用弹簧templete

​​

}

但使用解除绑定()删除从LDAP的特定属性,它会删除所有的属性, 但是我想从ldap中只删除特定的atrribute,就像这个人的角色一样。

感谢您的帮助。

回答

0

有三种模式:

  • MOD_ADD:这被用于添加的属性值。如果属性已经存在(并且模式允许多个值),则新的值将被添加,并且旧值将保持不变。
  • MOD_DELETE:属性值将被删除(如果存在)。
  • MOD_REPLACE:给定的属性值将替换该属性名称的所有其他值。换句话说, 属性的所有旧值都将被删除,然后这个值将被添加。

你应该使用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属性只移除属性值培根。如果不存在这样的值,则会引发NO_SUCH_ATTRIBUTE异常。否则,该值将被丢弃。

来源:https://www.packtpub.com/books/content/python-ldap-applications-part-3-more-ldap-operations-and-ldap-url-library

0

如果你不知道字段的值,然后使用无作为这样的(@Anouar莫卡塔里取例子)值:

mod_attrs = [ (ldap.MOD_DELETE, 'cn', None) ] 
l.modify_s('uid=francis,ou=users,dc=example,dc=com', mod_attrs)