弹簧LDAP自动取操作字段
问题描述:
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会很好。
答
你正在测试错误的东西。无论如何,测试存在是毫无意义的。你应该测试它是否已经设置为TRUE,并且只在没有设置时才进行设置。
其实你应该删除测试,因为测试和套件一样贵。我还建议不要将其设置为FALSE,而是完全删除与FALSE具有相同语义的属性。如果没有测试和这个改变,你不可能得到这个问题。