首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-ldap自动获取操作字段

spring-ldap自动获取操作字段
EN

Stack Overflow用户
提问于 2017-01-03 11:42:10
回答 1查看 422关注 0票数 0

古德,

正在开发一个允许用户更改密码(生成)的工具。我正在讨论一个小问题,在这里使用Spring (2.1.0.RELEASE)。

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

代码语言:javascript
复制
  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必须有一种方法来告诉它,您总是希望拥有操作属性。

安尼糖会很好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-04 23:09:03

你测试错了东西。无论如何,检验是否存在是毫无意义的。您应该测试它是否已经设置为TRUE,如果没有,则只对其进行设置。

实际上,您应该删除测试,因为测试和集合一样昂贵。我还建议不要将其设置为FALSE,而是完全删除属性,该属性具有与FALSE相同的语义。如果没有测试,使用此更改,您就不可能得到这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41442733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档