Spring Ldaptemplate 2将成员添加到组中

时间:2015-02-10 18:53:17

标签: spring ldap spring-ldap

使用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注释。

请让我知道我错过了什么。

2 个答案:

答案 0 :(得分:2)

update方法适用于ODM带注释的类。使用DirContextAdapter时,您应该使用modifyAttributes方法。

答案 1 :(得分:0)

尽管这是一个老问题,但这是我最近才提出的问题。对于以后再来的人,这个问题类似于在Spring Malformed 'member' attribute value上发现的问题。将两个问题的信息放在一起,我找到了解决问题的方法,并在此分享了对我有用的方法。

除了使用modifyAttributes类的LdapTemplate方法之外,传递String对象作为{添加成员时使用{1}}类,而不是传递addAttributeValue对象。在相应的DirContextOperations对象上调用的Name方法可以解决问题。

原始代码:

toString

尝试以下方法:

Name