古德,
正在开发一个允许用户更改密码(生成)的工具。我正在讨论一个小问题,在这里使用Spring (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必须有一种方法来告诉它,您总是希望拥有操作属性。
安尼糖会很好的。
发布于 2017-01-04 23:09:03
你测试错了东西。无论如何,检验是否存在是毫无意义的。您应该测试它是否已经设置为TRUE,如果没有,则只对其进行设置。
实际上,您应该删除测试,因为测试和集合一样昂贵。我还建议不要将其设置为FALSE,而是完全删除属性,该属性具有与FALSE相同的语义。如果没有测试,使用此更改,您就不可能得到这个问题。
https://stackoverflow.com/questions/41442733
复制相似问题