Gooday,
正在开发一种工具,允许用户更改密码(生成)。我正在使用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 :(得分:0)
你正在测试错误的东西。无论如何,对存在的测试毫无意义。您应该测试它是否已经设置为TRUE,并且仅在它不是设置时进行设置。
实际上你应该删除测试,因为测试和套装一样昂贵。我还建议不要将它设置为FALSE,而是完全删除属性,它具有与FALSE相同的语义。没有测试并且没有这个改变你就不可能解决这个问题。