使用 ldapJS 修改用户时如何动态传递属性
How can I pass in an attribute dynamically when modifying a user with ldapJS
我正在使用 ldapjs 并且我正在尝试将我自己的 API 配置为 modify/update LDAP 目录并且它工作正常,除非我想修改帐户,例如
var change = new ldap.Change({
operation: 'replace',
modification: {
company: 'Company Name'
}
});
client.modify('cn=foo, o=example', change, function(err) {
assert.ifError(err);
});
我发现不可能动态传递实际属性 'company'(或任何我需要更改的属性),我试过:
var attr = "company";
var value = "Company Name";
var change = new ldap.Change({
operation: 'replace',
modification: {attr:value}
})
但我得到-
Error modifying user: NoSuchAttribute
我也试过把它作为一个字符串:
var attr = "company";
var value = "Company Name";
var modification = "{ " + attr + ":" + value + "}";
var change = new ldap.Change({
operation: 'replace',
modification
})
但我得到:
Error('Only one attribute per Change allowed');
我不是那么有经验,所以不确定这是否可能?
是的,这是可能的,您只需将代码更改为
const someCompany = 'someComapny'
var change = new ldap.Change({
operation: 'replace',
modification: {company:someCompany}
})
如果您希望公司属性是动态的,您应该使用这样的计算 属性 语法
const someCompany = 'someComapny'
const companyKey = 'key'
var change = new ldap.Change({
operation: 'replace',
modification: {[companyKey]:someCompany}
})
我正在使用 ldapjs 并且我正在尝试将我自己的 API 配置为 modify/update LDAP 目录并且它工作正常,除非我想修改帐户,例如
var change = new ldap.Change({
operation: 'replace',
modification: {
company: 'Company Name'
}
});
client.modify('cn=foo, o=example', change, function(err) {
assert.ifError(err);
});
我发现不可能动态传递实际属性 'company'(或任何我需要更改的属性),我试过:
var attr = "company";
var value = "Company Name";
var change = new ldap.Change({
operation: 'replace',
modification: {attr:value}
})
但我得到-
Error modifying user: NoSuchAttribute
我也试过把它作为一个字符串:
var attr = "company";
var value = "Company Name";
var modification = "{ " + attr + ":" + value + "}";
var change = new ldap.Change({
operation: 'replace',
modification
})
但我得到:
Error('Only one attribute per Change allowed');
我不是那么有经验,所以不确定这是否可能?
是的,这是可能的,您只需将代码更改为
const someCompany = 'someComapny'
var change = new ldap.Change({
operation: 'replace',
modification: {company:someCompany}
})
如果您希望公司属性是动态的,您应该使用这样的计算 属性 语法
const someCompany = 'someComapny'
const companyKey = 'key'
var change = new ldap.Change({
operation: 'replace',
modification: {[companyKey]:someCompany}
})