From e10efae34a92fdcb6451f1a6a823a72b8c394d43 Mon Sep 17 00:00:00 2001
From: yn147 <2270338776@qq.com>
Date: 星期四, 13 四月 2023 14:27:26 +0800
Subject: [PATCH] 密码加密

---
 src/main/java/com/qxueyou/scc/user/service/impl/UserService.java |   37 ++++++++++++++----
 src/main/java/com/qxueyou/scc/user/model/User.java               |   13 ++++++
 src/main/java/com/qxueyou/scc/sys/action/LoginController.java    |   37 ++++++++++++------
 3 files changed, 67 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/qxueyou/scc/sys/action/LoginController.java b/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
index 81ed905..859e5e5 100644
--- a/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
+++ b/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
@@ -24,6 +24,7 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Controller;
+import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.*;
 
 import com.qxueyou.scc.admin.teacher.service.ITeacherService;
@@ -183,8 +184,8 @@
 		// 鏌ヨ鐢ㄦ埛淇℃伅
 		String uuNumber=null;
 		String uuReNumber=null;
-		String hql = "from User where deleteFlag is false and account = ? and password = ? ";
-		List<Object> params =  CollectionUtils.newList(account,password);
+		String hql = "from User where deleteFlag is false and account = ?";
+		List<Object> params =  CollectionUtils.newList(account);
 		User user = commonDAO.findUnique(hql,params, User.class);
 		if (user == null ) {
 			return new Result(false, "鐢ㄦ埛璐︽埛銆佸瘑鐮侀敊璇�");
@@ -213,6 +214,12 @@
 		}
 		// 鎻掑叆鏃ュ織
 		insertLoginLog(request, user, account, "SYS-LOGIN");
+		String salt = user.getSalt();
+		String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
+		//姣旇緝鐢ㄦ埛杈撳叆鐨勫瘑鐮佸姞瀵嗗悗鐨勫瓧绗︿覆鏄惁璺熸敞鍐屾椂濉啓鐨勫姞瀵嗗瘑鐮佺浉鍚�
+		if (!newPassword.equals(user.getPassword())) {
+			return new Result(false, "鐢ㄦ埛璐︽埛銆佸瘑鐮侀敊璇垨缂哄皯鍑瘉");
+		}
 		// 杩斿洖
 		return new Result(true, "楠岃瘉鎴愬姛",CollectionUtils.newObjectMap("uuNumber",uuNumber,"uuReNumber",uuReNumber));
 	}
@@ -374,16 +381,16 @@
 		List<Object> params = null;
 //        boolean flag=true;
 		if ("study".equals(logType)) {
-			hql = "from User where deleteFlag is false and account = ? and password = ? ";
-			params = CollectionUtils.newList(account, password);
+			hql = "from User where deleteFlag is false and account = ?";
+			params = CollectionUtils.newList(account);
 		}else if("portal".equals(logType)){
-			hql = "from User where deleteFlag is false and mobilePhone = ? and password = ? ";
-			params = CollectionUtils.newList(account, password);
+			hql = "from User where deleteFlag is false and mobilePhone = ?";
+			params = CollectionUtils.newList(account);
 		}else{
             if(StringUtils.isEmpty(password)) {
 				return new Result(false, "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖");
 			}
-            hql = "from User where deleteFlag is false and account = ? and password = ? ";
+            hql = "from User where deleteFlag is false and account = ? and password = ?";
             params =  CollectionUtils.newList(account,password);
         }
 
@@ -406,13 +413,19 @@
 //			request.getSession().removeAttribute("uuReNumber");
 //		}
 
+		if (user == null) {
+			return new Result(false, "鐢ㄦ埛璐︽埛涓嶅瓨鍦�");
+		}
         // 鎻掑叆鏃ュ織
         insertLoginLog(request, user, account, "SYS-LOGIN");
-
-        //鑰冭瘯鐧诲綍浼氭帶鍒秄lag鍙橀噺 鍏朵粬鐧诲綍涓嶄細 榛樿true
-        if (user == null) {
-            return new Result(false, "鐢ㄦ埛璐︽埛銆佸瘑鐮侀敊璇垨缂哄皯鍑瘉");
-        }
+		String salt = user.getSalt();
+		String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
+		//姣旇緝鐢ㄦ埛杈撳叆鐨勫瘑鐮佸姞瀵嗗悗鐨勫瓧绗︿覆鏄惁璺熸敞鍐屾椂濉啓鐨勫姞瀵嗗瘑鐮佺浉鍚�
+		if("study".equals(logType) || "portal".equals(logType)){
+			if (!newPassword.equals(user.getPassword())) {
+				return new Result(false, "鐢ㄦ埛璐︽埛銆佸瘑鐮侀敊璇垨缂哄皯鍑瘉");
+			}
+		}
 
         // 杩斿洖鐢ㄦ埛鍩烘湰淇℃伅
         return this.loginValidate(user, 1, request, response, logType, platForm, organizationId);
diff --git a/src/main/java/com/qxueyou/scc/user/model/User.java b/src/main/java/com/qxueyou/scc/user/model/User.java
index 7975abc..a460450 100644
--- a/src/main/java/com/qxueyou/scc/user/model/User.java
+++ b/src/main/java/com/qxueyou/scc/user/model/User.java
@@ -38,6 +38,19 @@
     @JsonIgnore
     private String createId;
 
+
+    @Column(name = "SALT", nullable = false, length = 32)
+    @JsonIgnore
+    private String salt;
+
+    public String getSalt() {
+        return salt;
+    }
+
+    public void setSalt(String salt) {
+        this.salt = salt;
+    }
+
     /**
      * 鍒涘缓鏃堕棿
      */
diff --git a/src/main/java/com/qxueyou/scc/user/service/impl/UserService.java b/src/main/java/com/qxueyou/scc/user/service/impl/UserService.java
index 3610bfb..7820d96 100644
--- a/src/main/java/com/qxueyou/scc/user/service/impl/UserService.java
+++ b/src/main/java/com/qxueyou/scc/user/service/impl/UserService.java
@@ -1,6 +1,7 @@
 package com.qxueyou.scc.user.service.impl;
 
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +21,7 @@
 import com.qxueyou.scc.user.model.User;
 import com.qxueyou.scc.user.model.UserReRoleUser;
 import com.qxueyou.scc.user.service.IUserService;
+import org.springframework.util.DigestUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
@@ -85,13 +87,18 @@
     }
 
     private User newUser(String name, String account, String mobilePhone, String password, Boolean sex, String orgId) {
-
+        //闅忔満瀛楃涓�
+        String salt= UUID.randomUUID().toString();
         User user = new User();
         TraceUtils.setCreateTrace(user);
         user.setAccount(account);
         user.setName(name);
+        //鐩愬��
+        user.setSalt(salt);
+        //瀵瑰瘑鐮佽繘琛屽姞瀵嗗鐞�
+        String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
+        user.setPassword(newPassword);
         user.setMobilePhone(mobilePhone);
-        user.setPassword(password);
         user.setSex(sex);
         user.setOrganizationId(orgId);
         save(user);
@@ -125,11 +132,18 @@
     @Override
     public Result updatePassword(String userId, String usedPass, String pass) {
         User user = read(User.class, userId);
+        //闅忔満瀛楃涓�
+        String salt= UUID.randomUUID().toString();
+        //鐩愬��
+        user.setSalt(salt);
+        //瀵瑰瘑鐮佽繘琛屽姞瀵嗗鐞�
+        String newPassword= DigestUtils.md5DigestAsHex((salt+pass).getBytes());
+        String newPasswords= DigestUtils.md5DigestAsHex((salt+usedPass).getBytes());
         if (StringUtils.isNotBlank(usedPass) && StringUtils.isNotBlank(pass)) {
-            if (!user.getPassword().equals(usedPass)) {
+            if (!user.getPassword().equals(newPasswords)) {
                 return new Result(false, "杈撳叆鐨勬棫瀵嗙爜閿欒");
             }
-            user.setPassword(pass);
+            user.setPassword(newPassword);
         }
         TraceUtils.setUpdateTrace(user);
         save(user);
@@ -177,8 +191,14 @@
     public Result updatePassword(String userId, String password) {
         User user = read(User.class, userId);
 
+        //闅忔満瀛楃涓�
+        String salt= UUID.randomUUID().toString();
+        //鐩愬��
+        user.setSalt(salt);
+        //瀵瑰瘑鐮佽繘琛屽姞瀵嗗鐞�
+        String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
         TraceUtils.setUpdateTrace(user);
-        user.setPassword(password);
+        user.setPassword(newPassword);
 
         save(user);
 
@@ -219,11 +239,12 @@
                              Boolean sex) {
 
         User dbUser = read(User.class, userId);
-
+		String salt = dbUser.getSalt();
+		String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
         if (dbUser.getAccount().equals(account)) {
             dbUser.setName(name);
             dbUser.setMobilePhone(mobilePhone);
-            dbUser.setPassword(password);
+            dbUser.setPassword(newPassword);
             TraceUtils.setCreateTrace(dbUser);
             save(dbUser);
             return new Result(true, "success");
@@ -236,7 +257,7 @@
         dbUser.setAccount(account);
         dbUser.setName(name);
         dbUser.setMobilePhone(mobilePhone);
-        dbUser.setPassword(password);
+        dbUser.setPassword(newPassword);
         TraceUtils.setCreateTrace(dbUser);
         save(dbUser);
         return new Result(true, "success");

--
Gitblit v1.8.0