You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ldapjs向groupOfNames添加用户时遇Attribute错误求助

解决ldapjs添加用户到groupOfNames组时的"modification must be an Attribute"错误

错误根源在于你创建ldap.Change时,直接传递了普通对象作为modification参数,但ldapjs要求这个参数必须是ldap.Attribute的实例,而非简单的键值对对象。

修改代码如下,核心是用ldap.Attribute构造函数创建合法的修改属性:

function addUserToGroup(userDN, groupName, callback) {
  const groupDN = `cn=${groupName},ou=groups,dc=XXX`;
  console.log(userDN);
  console.log(groupDN);
  
  // 先创建Attribute实例,这是关键修改点
  const memberAttr = new ldap.Attribute({
    type: 'member',
    values: [userDN]
  });
  
  const change = new ldap.Change({
    operation: 'add',
    modification: memberAttr, // 传入Attribute实例而非普通对象
  });

  client.modify(groupDN, change, (err) => {
    if (err) {
      console.error('Error adding user to group:', err);
    }
    callback(err, groupDN);
  });
}

addUserToGroup('uid=3d4dfc3d-7493-4a1d-9659-f1799a48a927,ou=people,dc=XXX', 'everybody', (err) => {
  if (err) {
    console.error('Error assigning user to group:', err);
  }
});

关键说明

  • ldapjs的Change类在验证modification参数时,会检查其是否为ldap.Attribute实例,否则就会抛出你遇到的错误。
  • 如果需要一次性修改多个属性,可以传入ldap.Attribute实例的数组,但这里只需要添加member属性,所以单个实例即可。

内容的提问来源于stack exchange,提问作者Herlambang Rafli Wicaksono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:40:22