gpt4 book ai didi

javascript - ldapjs,如何删除属性

转载 作者:行者123 更新时间:2023-11-30 11:37:40 26 4
gpt4 key购买 nike

我想使用 Node.js ldapjs client api #modify删除 LDAP 条目的属性。

通过 shell 和 ldapmodify ... -f removeAttribute.ldif 它可以工作,使用以下 ldif 文件:

dn: uid=user,dc=test
changetype: modify
delete: myAttribute

按照 ldapjs 文档,我必须使用操作 'delete' 并将属性添加到修改中(...删除修改中引用的属性(和所有值)...).

如果我尝试使用 ldapjs 执行此操作,则会出现错误。

let dn = 'uid=user,dc=test';
let change = { operation : 'delete', modification: { myAttribute: null } ;
client.modify(dn, change, err => { ... });

...导致错误无法读取 null 的属性“toString”

let dn = 'uid=user,dc=test';
let change = { operation : 'delete', modification: { myAttribute: oldValue } };
client.modify(dn, change, err => { ... });

... 导致InappropriateMatchingError

所以我的问题是:如果我想删除属性,我必须如何准备change 对象?

最佳答案

看来,原因是ldapjs/change.js 内部的错误.如果为非多值属性的删除操作指定了值,LDAP 服务器将拒绝执行。如果在change对象中设置值为nullundefined,ldapjs会报错,因为toString()方法不能使用在 nullundefined 上。

我已经修复了那段代码,现在它可以工作了。查看ldapjs GitHub pull request 435 .

现在可以将修改值设置为undefinednull。这导致没有任何属性值的请求。此请求被 LDAP 服务器接受并执行,属性被删除。

let change = { operation : 'delete', modification: { attributeName : undefined }};
client.modify(dn, change, (err, res) => { ... });

关于javascript - ldapjs,如何删除属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43759952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com