2017-01-03 58 views
0

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會很好。

回答

0

你正在測試錯誤的東西。無論如何,測試存在是毫無意義的。你應該測試它是否已經設置爲TRUE,並且只在沒有設置時才進行設置。

其實你應該刪除測試,因爲測試和套件一樣貴。我還建議不要將其設置爲FALSE,而是完全刪除與FALSE具有相同語義的屬性。如果沒有測試和這個改變,你不可能得到這個問題。