完善sample-user,密码加密保存
diff --git a/samples/common/src/main/java/com/supwisdom/leaveschool/common/controller/api/CrudApiController.java b/samples/common/src/main/java/com/supwisdom/leaveschool/common/controller/api/CrudApiController.java
index a84d7f4..b9474e8 100644
--- a/samples/common/src/main/java/com/supwisdom/leaveschool/common/controller/api/CrudApiController.java
+++ b/samples/common/src/main/java/com/supwisdom/leaveschool/common/controller/api/CrudApiController.java
@@ -154,7 +154,7 @@
* response success:
*
* {
- * "success":"info.save.success"
+ * "success":"info.create.success"
* }
*
* response error 401:
@@ -184,13 +184,13 @@
@PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public Map<String, Object> save(@RequestBody D d) {
+ public Map<String, Object> create(@RequestBody D d) {
@SuppressWarnings("unused")
D ret = getRepository().insert(d);
Map<String, Object> res = new HashMap<String, Object>();
- res.put("success", "info.save.success");
+ res.put("success", "info.create.success");
return res;
}
diff --git a/samples/gateway/src/main/resources/application.yml b/samples/gateway/src/main/resources/application.yml
index 72fcad4..ee435bf 100755
--- a/samples/gateway/src/main/resources/application.yml
+++ b/samples/gateway/src/main/resources/application.yml
@@ -22,7 +22,7 @@
predicates:
- Path=/sample-user/**
filters:
- - AddRequestHeader=Remote_User, admin
+ #- AddRequestHeader=Remote_User, admin
#- RewritePath=/(?<prefix>.*)/sample-user/(?<suffix>.*), /$\{prefix}/$\{suffix}
- RewritePath=/sample-user/(?<suffix>.*), /$\{suffix}
- name: Hystrix
diff --git a/samples/user/pom.xml b/samples/user/pom.xml
index e6c0032..0b782b5 100644
--- a/samples/user/pom.xml
+++ b/samples/user/pom.xml
@@ -64,8 +64,14 @@
-->
<dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-core</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
+ <scope>runtime</scope>
</dependency>
<!-- Test things -->
@@ -81,6 +87,12 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<build>
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/PasswordEncoderConfig.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/PasswordEncoderConfig.java
new file mode 100644
index 0000000..a92dea4
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/PasswordEncoderConfig.java
@@ -0,0 +1,30 @@
+package com.supwisdom.leaveschool.user.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.crypto.factory.PasswordEncoderFactories;
+import org.springframework.security.crypto.password.DelegatingPasswordEncoder;
+import org.springframework.security.crypto.password.NoOpPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+@Configuration
+public class PasswordEncoderConfig {
+
+ private static final Logger logger = LoggerFactory.getLogger(PasswordEncoderConfig.class);
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+
+ PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
+
+ if (passwordEncoder instanceof DelegatingPasswordEncoder) {
+ ((DelegatingPasswordEncoder)passwordEncoder).setDefaultPasswordEncoderForMatches(NoOpPasswordEncoder.getInstance());
+ }
+
+ logger.debug("PasswordEncoderConfig passwordEncoder is {}", passwordEncoder);
+ return passwordEncoder;
+ }
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
index d1a6137..e18015b 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
@@ -8,6 +8,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
+import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.util.MimeTypeUtils;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -46,6 +47,9 @@
@Autowired
private UserRoleRepository userRoleRepository;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
@Override
protected UserRepository getRepository() {
@@ -208,7 +212,7 @@
*
* <pre>
* {
- * "success":"info.save.success"
+ * "success":"info.create.success"
* }
* </pre>
*
@@ -244,13 +248,19 @@
@PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public Map<String, Object> save(@RequestBody User user) {
+ public Map<String, Object> create(@RequestBody User user) {
+
+ // FIXME: 验证数据有效性
+
+ if (user.getPassword() !=null && user.getPassword().length() > 0 && !user.getPassword().startsWith("{")) {
+ user.setPassword(passwordEncoder.encode(user.getPassword()));
+ }
@SuppressWarnings("unused")
User ret = userRepository.insert(user);
Map<String, Object> res = new HashMap<String, Object>();
- res.put("success", "info.save.success");
+ res.put("success", "info.create.success");
return res;
}
@@ -329,6 +339,10 @@
if (tmp == null) {
throw new RuntimeException("exception.update.domain.not.exist"); // FIXME: RestException
}
+
+ if (user.getPassword() !=null && user.getPassword().length() > 0 && !user.getPassword().startsWith("{")) {
+ user.setPassword(passwordEncoder.encode(user.getPassword()));
+ }
tmp = DomainUtils.merge(user, tmp);