使用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
相关产品推荐
相关产品推荐

