Skip to content

Commit e6d05a2

Browse files
committed
处理密码加密
1 parent 1d071a7 commit e6d05a2

File tree

4 files changed

+41
-7
lines changed

4 files changed

+41
-7
lines changed

samples/blog-user/src/main/java/com/waylau/spring/boot/blog/controller/UserController.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import org.springframework.data.domain.Pageable;
1212
import org.springframework.http.ResponseEntity;
1313
import org.springframework.security.access.prepost.PreAuthorize;
14+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
15+
import org.springframework.security.crypto.password.PasswordEncoder;
1416
import org.springframework.ui.Model;
1517
import org.springframework.web.bind.annotation.DeleteMapping;
1618
import org.springframework.web.bind.annotation.GetMapping;
@@ -89,6 +91,23 @@ public ResponseEntity<Response> create(User user, Long authorityId) {
8991
List<Authority> authorities = new ArrayList<>();
9092
authorities.add(authorityService.getAuthorityById(authorityId));
9193
user.setAuthorities(authorities);
94+
95+
if(user.getId() == null) {
96+
user.setEncodePassword(user.getPassword()); // 加密密码
97+
}else {
98+
// 判断密码是否做了变更
99+
User originalUser = userService.getUserById(user.getId());
100+
String rawPassword = originalUser.getPassword();
101+
PasswordEncoder encoder = new BCryptPasswordEncoder();
102+
String encodePasswd = encoder.encode(user.getPassword());
103+
boolean isMatch = encoder.matches(rawPassword, encodePasswd);
104+
if (!isMatch) {
105+
user.setEncodePassword(user.getPassword());
106+
}else {
107+
user.setPassword(user.getPassword());
108+
}
109+
}
110+
92111
try {
93112
userService.saveUser(user);
94113
} catch (ConstraintViolationException e) {

samples/blog-user/src/main/java/com/waylau/spring/boot/blog/controller/UserspaceController.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import org.springframework.security.access.prepost.PreAuthorize;
88
import org.springframework.security.core.userdetails.UserDetails;
99
import org.springframework.security.core.userdetails.UserDetailsService;
10+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
11+
import org.springframework.security.crypto.password.PasswordEncoder;
1012
import org.springframework.stereotype.Controller;
1113
import org.springframework.ui.Model;
1214
import org.springframework.web.bind.annotation.GetMapping;
@@ -61,11 +63,20 @@ public ModelAndView profile(@PathVariable("username") String username, Model mod
6163
@PreAuthorize("authentication.name.equals(#username)")
6264
public String saveProfile(@PathVariable("username") String username,User user) {
6365
System.out.println("username" + username);
64-
User oldUser = userService.getUserById(user.getId());
65-
oldUser.setEmail(user.getEmail());
66-
oldUser.setName(user.getName());
67-
oldUser.setPassword(user.getPassword());
68-
userService.saveUser(oldUser);
66+
User originalUser = userService.getUserById(user.getId());
67+
originalUser.setEmail(user.getEmail());
68+
originalUser.setName(user.getName());
69+
70+
// 判断密码是否做了变更
71+
String rawPassword = originalUser.getPassword();
72+
PasswordEncoder encoder = new BCryptPasswordEncoder();
73+
String encodePasswd = encoder.encode(user.getPassword());
74+
boolean isMatch = encoder.matches(rawPassword, encodePasswd);
75+
if (!isMatch) {
76+
originalUser.setEncodePassword(user.getPassword());
77+
}
78+
79+
userService.saveUser(originalUser);
6980
return "redirect:/u/" + username + "/profile";
7081
}
7182

samples/blog-user/src/main/java/com/waylau/spring/boot/blog/domain/User.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,15 @@ public String getPassword() {
128128
}
129129

130130
public void setPassword(String password) {
131+
this.password = password;
132+
}
133+
134+
public void setEncodePassword(String password) {
131135
PasswordEncoder encoder = new BCryptPasswordEncoder();
132136
String encodePasswd = encoder.encode(password);
133137
this.password = encodePasswd;
134138
}
135-
139+
136140
@Override
137141
public boolean isAccountNonExpired() {
138142
return true;

samples/blog-user/src/main/resources/templates/profile.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ <h5 class="card-header"><i class="fa fa-cog" aria-hidden="true"></i> 个人设
7777
</div>
7878
<div class="form-group">
7979
<label for="password" class="col-form-label">密码</label>
80-
<input type="password" class="form-control" id="password" name="password" th:value="*{password}" maxlength="30" placeholder="请输入密码,字母或特殊符号和数字结合" >
80+
<input type="password" class="form-control" id="password" name="password" th:value="*{password}" maxlength="30" placeholder="请输入密码,至少3个字符,至多30个" >
8181
</div>
8282
<div class="form-group">
8383
<button type="submit" class="btn btn-primary">保存</button>

0 commit comments

Comments
 (0)