ssm框架写修改密码
时间: 2023-12-21 10:30:33 浏览: 180
ssm框架登录验证、增删改查
以下是在SSM框架下修改密码的示例代码:
1.在Mapper.xml文件中编写SQL语句
```xml
<!-- 根据用户ID和旧密码更新密码 -->
<update id="updatePasswordByUidAndOldPwd">
update tb_user
set password=#{newPwd}, salt=#{salt}, modified_User=#{modifyUser}, modified_Time=#{modifyTime}
where uid=#{uid} and password=#{oldPwd}
</update>
```
2.在Dao层中定义接口方法
```java
public interface UserDao {
/**
* 根据用户ID和旧密码更新密码
* @param uid 用户ID
* @param oldPwd 旧密码
* @param newPwd 新密码
* @param salt 盐值
* @param modifyUser 修改人
* @param modifyTime 修改时间
* @return 影响的行数
*/
int updatePasswordByUidAndOldPwd(@Param("uid") Integer uid, @Param("oldPwd") String oldPwd,
@Param("newPwd") String newPwd, @Param("salt") String salt,
@Param("modifyUser") String modifyUser, @Param("modifyTime") Date modifyTime);
}
```
3.在Service层中定义接口方法,并调用Dao层方法
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public boolean updatePassword(Integer uid, String oldPwd, String newPwd) {
// 根据用户ID查询用户信息
User user = userDao.selectByUid(uid);
if (user == null) {
return false;
}
// 对用户输入的旧密码进行加密
String encryptedOldPwd = MD5Util.encrypt(oldPwd + user.getSalt());
// 判断用户输入的旧密码是否正确
if (!encryptedOldPwd.equals(user.getPassword())) {
return false;
}
// 生成新的盐值
String salt = MD5Util.getRandomSalt();
// 对用户输入的新密码进行加密
String encryptedNewPwd = MD5Util.encrypt(newPwd + salt);
// 获取当前时间
Date now = new Date();
// 更新密码
int result = userDao.updatePasswordByUidAndOldPwd(uid, encryptedOldPwd, encryptedNewPwd, salt, "admin", now);
return result == 1;
}
}
```
4.在Controller层中定义接口方法,并调用Service层方法
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/updatePassword")
public Result updatePassword(@RequestParam Integer uid, @RequestParam String oldPwd, @RequestParam String newPwd) {
boolean result = userService.updatePassword(uid, oldPwd, newPwd);
if (result) {
return Result.success();
} else {
return Result.error("修改密码失败");
}
}
}
```
阅读全文