2017-01-03 11 views
0

덕분에spring-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이 절대로 설정되지 않는 한이 비트의 코드는 정상적으로 작동합니다. 그러나 그것이 설정되어 있다면 (따라서 값은 거짓입니다). 당신은 에러 코드를 얻을 수 있습니다 :

LDAP : 오류 코드 20 - 추가/수정 : pwdReset : 값 # 0 이미

지금 내가 디자인하여 LDAP가 작동 특성을 제공하지 않습니다 그것의 알고있는 뒤로. 그러나 Spring Ldap에서 작동 특성을 항상 갖고 싶어한다고 말하는 방법이 있어야합니다.

Anny sugestions은 좋을 것입니다.

답변

0

잘못된 것을 테스트하고 있습니다. 어쨌든 존재 테스트는 무의미합니다. 이미 TRUE로 설정되어 있는지 테스트하고, TRUE로 설정되어 있지 않은 경우에만 설정해야합니다.

실제로 테스트는 세트만큼 비쌉니다. 테스트를 제거해야합니다. 또한 FALSE로 설정하지 말고 FALSE와 동일한 의미를 갖는 속성을 모두 제거하는 것이 좋습니다. 테스트가 없으면이 변경으로 인해이 문제가 발생할 수 없습니다.