このエラーは、著作権管理プロジェクトで作業していたときに発生しました
エラーコード
@Override
public Results<Void> changePassword(String username, String oldPassword, String newPassword) {
// 根据用户名查询
SysUser user = sysUserMapper.selcetUserByUsername(username);
// 判断用户是否为空
if (user == null) {
return Results.failure(1, "用户不存在");
}
// 校验之前的密码是否正确, 这里就是错误所在
if (!(new BCryptPasswordEncoder().encode(user.getPassword()).equals(oldPassword))) {
return Results.failure(1, "旧密码错误");
}
// 修改数据库中的密码
sysUserMapper.update(user.getId(), new BCryptPasswordEncoder().encode(newPassword));
return Results.success();
}
文字列がBCryptPasswordEncoderによって暗号化された後は、生成される暗号文が異なるため、この比較はここでは実行できず、BCryptPasswordEncoderの一致メソッドが必要になるため
@Override
public Results<Void> changePassword(String username, String oldPassword, String newPassword) {
// 根据用户名查询
SysUser user = sysUserMapper.selcetUserByUsername(username);
// 判断用户是否为空
if (user == null) {
return Results.failure(1, "用户不存在");
}
// 校验之前的密码是否正确
if (!new BCryptPasswordEncoder().matches(oldPassword, user.getPassword())) {
return Results.failure(1, "旧密码错误");
}
// 修改数据库中的密码
sysUserMapper.update(user.getId(), new BCryptPasswordEncoder().encode(newPassword));
return Results.success();
}