springboot修改密码 代码
时间: 2023-07-07 17:40:30 浏览: 127
好的,下面是一个简单的Spring Boot修改密码的示例代码:
1. 创建密码修改表单
```html
<form method="post" action="/change-password">
<div class="form-group">
<label>旧密码</label>
<input type="password" name="oldPassword" class="form-control">
</div>
<div class="form-group">
<label>新密码</label>
<input type="password" name="newPassword" class="form-control">
</div>
<div class="form-group">
<label>确认新密码</label>
<input type="password" name="confirmPassword" class="form-control">
</div>
<button type="submit" class="btn btn-primary">修改密码</button>
</form>
```
2. 创建控制器方法
```java
@Controller
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/change-password")
public ModelAndView changePassword(@RequestParam("oldPassword") String oldPassword,
@RequestParam("newPassword") String newPassword,
@RequestParam("confirmPassword") String confirmPassword,
Principal principal) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("change-password");
// 验证旧密码是否正确
User currentUser = userService.findByUsername(principal.getName());
String encodedOldPassword = currentUser.getPassword();
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
if (!passwordEncoder.matches(oldPassword, encodedOldPassword)) {
modelAndView.addObject("message", "旧密码输入错误");
return modelAndView;
}
// 验证新密码和确认新密码是否一致
if (!newPassword.equals(confirmPassword)) {
modelAndView.addObject("message", "新密码和确认新密码不一致");
return modelAndView;
}
// 加密新密码
String encodedNewPassword = passwordEncoder.encode(newPassword);
// 更新用户密码
currentUser.setPassword(encodedNewPassword);
userService.save(currentUser);
modelAndView.addObject("message", "密码修改成功");
return modelAndView;
}
}
```
3. 在模板引擎中显示修改密码的结果
```html
<div th:if="${message}" class="alert alert-info" role="alert">
<span th:text="${message}"></span>
</div>
```
这个示例代码中,使用了Spring Security提供的BCryptPasswordEncoder来加密和验证密码,UserService是一个自定义的服务类,用于查询和更新用户信息。在控制器方法中,首先验证旧密码是否正确,然后验证新密码和确认新密码是否一致,最后更新用户的密码并将修改结果返回给前端。在模板引擎中,使用了Thymeleaf提供的if语句和消息提示功能来显示修改密码的结果。
阅读全文