2017-01-03 61 views
0

Gooday,弹簧LDAP自动取操作字段

正在处理的工具,可以让用户更改有密码(生成)。我正在使用Spring Ldap(2.1.0.RELEASE)解决问题。

现在我们要设置一些操作属性。这是我使用的代码:

public void updatePassword(LdapUser ldapUser) { 
    String[] userOrg = ldapUser.getUserName().split("@"); 
    Name dn = buildDn(userOrg[1], ldapUser.getUserName()); 
    DirContextOperations context = ldapTemplate.lookupContext(dn); 
    context.setAttributeValue(USER_PASSW, ldapUser.getUserPassword()); 
    if(!context.attributeExists("pwdReset")) { 
     context.setAttributeValue("pwdReset", "TRUE"); 
    } 
    ldapTemplate.modifyAttributes(context); 
    } 

现在只要操作属性pwdReset从不设置这一点的代码工作正常。但是,如果它曾经被设置(因此是值FALSE)。你可以得到错误代码:

LDAP:错误代码20 - 修改/添加:pwdReset:值#0已经存在

现在我知道它的设计在LDAP不给操作属性背部。但是在Spring Ldap中必须有一种方法来告诉它,你总是希望拥有操作属性。

Anny sugestions会很好。

回答

0

你正在测试错误的东西。无论如何,测试存在是毫无意义的。你应该测试它是否已经设置为TRUE,并且只在没有设置时才进行设置。

其实你应该删除测试,因为测试和套件一样贵。我还建议不要将其设置为FALSE,而是完全删除与FALSE具有相同语义的属性。如果没有测试和这个改变,你不可能得到这个问题。