首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ldapjs,如何删除属性

ldapjs,如何删除属性
EN

Stack Overflow用户
提问于 2017-05-03 12:24:16
回答 2查看 1.8K关注 0票数 2

我想使用Node.js ldapjs客户端api #修改删除LDAP条目的属性。

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

代码语言:javascript
复制
dn: uid=user,dc=test
changetype: modify
delete: myAttribute

在ldapjs文档之后,我必须使用'delete'操作并将属性添加到修改中(...Deletes,修改中引用的属性(和所有值))。

如果我试着用ldapjs来做这件事,我就会出错。

代码语言:javascript
复制
let dn = 'uid=user,dc=test';
let change = { operation : 'delete', modification: { myAttribute: null } ;
client.modify(dn, change, err => { ... });

..。导致错误,无法读取属性'toString‘的null

代码语言:javascript
复制
let dn = 'uid=user,dc=test';
let change = { operation : 'delete', modification: { myAttribute: oldValue } };
client.modify(dn, change, err => { ... });

..。导致InappropriateMatchingError

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-03 15:18:01

原因似乎是ldapjs/change.js内部的一个bug。如果为非多值属性上的delete操作提供了一个值,则LDAP服务器将拒绝执行。如果在change对象中将值设置为nullundefined,则ldapjs将引发错误,因为toString()方法不能用于null或未定义。

我已经修复了这段代码,现在它起作用了。见ldapjs GitHub拉出请求435

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

代码语言:javascript
复制
let change = { operation : 'delete', modification: { attributeName : undefined }};
client.modify(dn, change, (err, res) => { ... });
票数 2
EN

Stack Overflow用户

发布于 2018-02-08 08:23:09

传递空数组似乎有效。在错误被修复之前,这是我的解决办法。

代码语言:javascript
复制
let change = { operation : 'delete', modification: { myAttribute: [] } };
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43759952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档