Skip to content

Commit ad22926

Browse files
committedMar 2, 2017
modify BCryptPasswordEncoder
1 parent 1de6a7c commit ad22926

File tree

8 files changed

+78
-67
lines changed

8 files changed

+78
-67
lines changed
 

‎springboot-springSecurity2/src/main/java/com/us/example/config/WebSecurityConfig.java

+1-17
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package com.us.example.config;
22

33
import com.us.example.security.CustomUserService;
4-
import com.us.example.util.MD5Util;
54
import org.springframework.beans.factory.annotation.Autowired;
6-
import org.springframework.context.annotation.Bean;
75
import org.springframework.context.annotation.Configuration;
86
import org.springframework.http.HttpMethod;
97
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
108
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
119
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
1210
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
1311
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
14-
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
15-
import org.springframework.security.core.userdetails.UserDetailsService;
1612
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
17-
import org.springframework.security.crypto.password.PasswordEncoder;
18-
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
1913

2014
/**
2115
* Created by yangyibo on 17/1/18.
@@ -31,17 +25,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
3125

3226
@Autowired
3327
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
34-
auth.userDetailsService(customUserService).passwordEncoder(new PasswordEncoder(){
35-
36-
@Override
37-
public String encode(CharSequence rawPassword) {
38-
return MD5Util.encode((String)rawPassword);
39-
}
40-
41-
@Override
42-
public boolean matches(CharSequence rawPassword, String encodedPassword) {
43-
return encodedPassword.equals(MD5Util.encode((String)rawPassword));
44-
}}); //user Details Service验证
28+
auth.userDetailsService(customUserService).passwordEncoder(new BCryptPasswordEncoder());
4529
}
4630

4731
@Override

‎springboot-springSecurity2/src/main/java/com/us/example/controller/HomeController.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package com.us.example.controller;
22

3+
import com.us.example.dao.UserDao;
4+
import com.us.example.domain.SysUser;
5+
import com.us.example.service.UserService;
6+
import org.springframework.beans.factory.annotation.Autowired;
37
import org.springframework.security.access.annotation.Secured;
48
import org.springframework.stereotype.Controller;
9+
import org.springframework.web.bind.annotation.RequestBody;
510
import org.springframework.web.bind.annotation.RequestMapping;
611
import org.springframework.web.bind.annotation.RequestMethod;
712
import org.springframework.web.bind.annotation.ResponseBody;
@@ -12,6 +17,8 @@
1217
@Controller
1318
@RequestMapping("/users")
1419
public class HomeController {
20+
@Autowired
21+
UserService userService;
1522

1623
@RequestMapping(method = RequestMethod.GET)
1724
@ResponseBody
@@ -22,8 +29,8 @@ public String getUsers() {
2229
@Secured({"ROLE_ADMIN","ROLE_USER"})
2330
@RequestMapping(method = RequestMethod.POST)
2431
@ResponseBody
25-
public String save() {
26-
return "saveUser";
32+
public Object save(@RequestBody SysUser user) {
33+
return userService.create(user);
2734
}
2835

2936

‎springboot-springSecurity2/src/main/java/com/us/example/dao/UserDao.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@
44

55

66
public interface UserDao {
7-
public SysUser findByUserName(String username);
7+
SysUser findByUserName(String username);
8+
9+
int create (SysUser sysUser);
810
}

‎springboot-springSecurity2/src/main/java/com/us/example/domain/SysUser.java

+15
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public class SysUser implements UserDetails { // implements UserDetails 用于
1616
private String username;
1717
@JsonIgnore
1818
private String password;
19+
private String rawPassword;
20+
@JsonIgnore
1921
private List<SysRole> roles;
2022
private List<? extends GrantedAuthority> authorities;
2123

@@ -52,16 +54,27 @@ public void setRoles(List<SysRole> roles) {
5254
this.roles = roles;
5355
}
5456

57+
public String getRawPassword() {
58+
return rawPassword;
59+
}
60+
61+
public void setRawPassword(String rawPassword) {
62+
this.rawPassword = rawPassword;
63+
}
64+
65+
5566
@JsonIgnore
5667
@Override
5768
public boolean isAccountNonExpired() {
5869
return true;
5970
}
71+
6072
@JsonIgnore
6173
@Override
6274
public boolean isAccountNonLocked() {
6375
return true;
6476
}
77+
6578
@JsonIgnore
6679
@Override
6780
public boolean isCredentialsNonExpired() {
@@ -74,11 +87,13 @@ public boolean isCredentialsNonExpired() {
7487
public boolean isEnabled() {
7588
return true;
7689
}
90+
7791
@JsonIgnore
7892
@Override
7993
public Collection<? extends GrantedAuthority> getAuthorities() {
8094
return authorities;
8195
}
96+
8297
public void setGrantedAuthorities(List<? extends GrantedAuthority> authorities) {
8398
this.authorities = authorities;
8499
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.us.example.service;
2+
3+
import com.us.example.dao.UserDao;
4+
import com.us.example.domain.SysUser;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
7+
import org.springframework.stereotype.Service;
8+
9+
/**
10+
* Created by yangyibo on 17/3/2.
11+
*/
12+
@Service
13+
public class UserService {
14+
@Autowired
15+
UserDao userDao;
16+
17+
public SysUser create(SysUser sysUser){
18+
//进行加密
19+
BCryptPasswordEncoder encoder =new BCryptPasswordEncoder();
20+
sysUser.setPassword(encoder.encode(sysUser.getRawPassword().trim()));
21+
userDao.create(sysUser);
22+
return sysUser;
23+
}
24+
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.us.example.util;
2+
3+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
4+
5+
/**
6+
* Created by yangyibo on 17/3/2.
7+
*/
8+
public class BCryptPasswordEncoderTest {
9+
public static void main(String[] args) {
10+
11+
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
12+
System.out.println(encoder.encode("abel"));
13+
System.out.println(encoder.encode("admin"));
14+
}
15+
}

‎springboot-springSecurity2/src/main/java/com/us/example/util/MD5Util.java

-47
This file was deleted.

‎springboot-springSecurity2/src/main/resources/mapper/UserDaoMapper.xml

+10
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,14 @@
1818
LEFT JOIN Sys_Role r on sru.Sys_Role_id=r.id
1919
where username= #{username}
2020
</select>
21+
22+
<insert id="create" parameterType="com.us.example.domain.SysUser">
23+
<selectKey resultType="int" order="AFTER" keyProperty="id" >
24+
SELECT LAST_INSERT_ID()
25+
</selectKey>
26+
INSERT into Sys_User
27+
(username,password)
28+
values
29+
(#{username},#{password})
30+
</insert>
2131
</mapper>

0 commit comments

Comments
 (0)
Please sign in to comment.