2017-01-03 8 views
0

Gooday、spring-ldap auto fetch操作フィールド

パスワード(変更された)をユーザーが変更できるツールで作業していました。そして、私は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と同じセマンティクスを持つ属性をすべて削除することをお勧めします。テストがなければ、この変更でこの問題を解決することはできません。

関連する問題