在Spring Boot中 1.5.9
应用程序,我有一个重置密码的功能。通过使用令牌,我能够识别正在重置密码的用户。
这就是我如何更新一个连接用户的密码。
public void updatePassword(User entity) {
if (null != entity.getOldPassword() && null != entity.getPassword()) {
userDetailsService.changePassword(entity.getOldPassword(), encrypt(entity.getPassword()));
}
}
我使用 LdapUserDetailsManager userDetailsService
从弹簧安全ldap 4.2.3.RELEASE
,我没有看到任何方法来重置密码的用户,我有 username
从。
如何使用 username
(或 uid
ldap中的)?)
解决方法在这个帖子里。https:/tech.wrighting.org20130606使用ldap密码-修改-扩展-操作-使用-spring-ldap
我是这样做的。
DistinguishedName dn = new DistinguishedName(dn_string);
Attribute passwordAttribute = new BasicAttribute(passwordAttr,
newPassword);
ModificationItem[] modificationItems = new ModificationItem[1];
modificationItems[0] = new ModificationItem(
DirContext.REPLACE_ATTRIBUTE, passwordAttribute);
/*
Attribute userPasswordChangedAttribute = new BasicAttribute(
LDAP_PASSWORD_CHANGE_DATE, format.format(convertToUtc(null)
.getTime()) + "Z");
ModificationItem newPasswordChanged = new ModificationItem(
DirContext.REPLACE_ATTRIBUTE, userPasswordChangedAttribute);
modificationItems[1] = newPasswordChanged;
*/
getLdapTemplate().modifyAttributes(dn, modificationItems);
我比较喜欢这种方法,因为我使用的spring security ldap的版本是不使用密码叠加来修改密码的,为了和它保持一致,否则,如果你使用的是spring security ldap的最新版本,比较喜欢第二种方法。