代码拉取完成,页面将自动刷新
问题描述:
系统管理-管理员管理- 修改密码之后 -登录总是报错:用户名密码错误
原因:
io.renren.modules.sys.service.impl.SysUserServiceImpl#update
方法,修改密码时没有查询出来salt:
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SysUserEntity user) {
if(StringUtils.isBlank(user.getPassword())){
user.setPassword(null);
}else{
user.setPassword(ShiroUtils.sha256(user.getPassword(), user.getSalt())); // user.getSalt()获得的salt为null
}
this.updateById(user);
//保存用户与角色关系
sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList());
}
修改:
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SysUserEntity user) {
if(StringUtils.isBlank(user.getPassword())){
user.setPassword(null);
}else{
user.setPassword(ShiroUtils.sha256(user.getPassword(), baseMapper.selectById(user.getUserId()).getSalt())); // 这里去db中查询一下salt。
}
this.updateById(user);
//保存用户与角色关系
sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList());
}