使用 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}
   })