使用spring LdapTemplate在组中添加成员的最佳方法是什么。 我已成功创建用户并删除用户ex。 但我正在尝试添加成员,然后我面临问题。
添加会员代码:
public boolean addMemberToGroup(List<String> groupList, User user) {
boolean isAddedSuccessfully=false;
try{
for(int i=0;i<groupList.size();i++){
Name groupDn = buildGroupDn(groupList.get(i));
DirContextOperations ctx = ldapTemplate.lookupContext(groupDn);
ctx.addAttributeValue("member",buildPersonDn(user.getUid()));
ldapTemplate.update(ctx);
}
isAddedSuccessfully=true;
}
catch(Exception e){
isAddedSuccessfully=false;
}
return isAddedSuccessfully;
}
private Name buildGroupDn(String groupName) {
return LdapNameBuilder.newInstance("cn=groups").add("cn", groupName).build();
}
private Name buildPersonDn(String userID) {
return LdapNameBuilder.newInstance()
.add("uid", userID).add("cn", "users")
.build();
}
addMemberToGroup的异常:类class org.springframework.ldap.core.DirContextAdapter必须具有类级别接口org.springframework.ldap.odm.annotations.Entry注释。
请让我知道我错过了什么。
答案 0 :(得分:2)
update
方法适用于ODM带注释的类。使用DirContextAdapter
时,您应该使用modifyAttributes方法。
答案 1 :(得分:0)
尽管这是一个老问题,但这是我最近才提出的问题。对于以后再来的人,这个问题类似于在Spring Malformed 'member' attribute value上发现的问题。将两个问题的信息放在一起,我找到了解决问题的方法,并在此分享了对我有用的方法。
除了使用modifyAttributes
类的LdapTemplate
方法之外,传递String
对象作为{添加成员时使用{1}}类,而不是传递addAttributeValue
对象。在相应的DirContextOperations
对象上调用的Name
方法可以解决问题。
原始代码:
toString
尝试以下方法:
Name