Просмотр исходного кода

improvement: 删除代码加密,使用mysql内置加密函数加密

ChenSiTong 6 лет назад
Родитель
Сommit
7246d57551

+ 2 - 0
src/main/java/nju/seec/helper/dao/UserDAO.java

@@ -7,6 +7,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
 import java.util.Optional;
@@ -52,6 +53,7 @@ public interface UserDAO extends JpaRepository<User, Long>, JpaSpecificationExec
      * @param password
      * @return
      */
+    @Query(nativeQuery = true, value = "select * from User u where u.email = ?1 and u.password = md5(sha2(?2, 256))")
     Optional<User> findByEmailAndPassword(String email, String password);
 
     /**

+ 4 - 4
src/main/java/nju/seec/helper/entity/User.java

@@ -4,11 +4,10 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 import nju.seec.helper.enums.UserState;
 import nju.seec.helper.enums.UserType;
-import org.hibernate.annotations.ColumnDefault;
-import org.hibernate.annotations.CreationTimestamp;
-import org.hibernate.annotations.DynamicInsert;
-import org.hibernate.annotations.DynamicUpdate;
+import org.hibernate.annotations.*;
 
+import javax.persistence.Entity;
+import javax.persistence.Table;
 import javax.persistence.*;
 import java.time.LocalDateTime;
 
@@ -40,6 +39,7 @@ public class User {
     @Column(nullable = false)
     private String phone;
 
+    @ColumnTransformer(write = "md5(sha2(?, 256))")
     @Column(nullable = false)
     private String password;
 

+ 1 - 2
src/main/java/nju/seec/helper/service/impl/AdminServiceImpl.java

@@ -9,7 +9,6 @@ import nju.seec.helper.enums.UserState;
 import nju.seec.helper.enums.UserType;
 import nju.seec.helper.exception.HelperException;
 import nju.seec.helper.service.AdminService;
-import nju.seec.helper.util.EncryptUtils;
 import nju.seec.helper.util.StringUtils;
 import nju.seec.helper.vo.AdminVO;
 import nju.seec.helper.vo.UserVO;
@@ -35,7 +34,7 @@ public class AdminServiceImpl implements AdminService {
     @Transactional(readOnly = true)
     @Override
     public AdminVO getAdminByUsernameAndPassword(String username, String password) {
-        return adminDAO.findByUsernameAndPassword(username, EncryptUtils.encode(password))
+        return adminDAO.findByUsernameAndPassword(username, password)
                 .map(AdminVO::new)
                 .orElseThrow(() -> HelperException.of(ExceptionType.NOT_FOUND, "用户名密码错误"));
     }

+ 3 - 9
src/main/java/nju/seec/helper/service/impl/UserServiceImpl.java

@@ -11,7 +11,6 @@ import nju.seec.helper.enums.UserType;
 import nju.seec.helper.exception.HelperException;
 import nju.seec.helper.service.UserService;
 import nju.seec.helper.util.Consts;
-import nju.seec.helper.util.EncryptUtils;
 import nju.seec.helper.util.RedisCacheUtils;
 import nju.seec.helper.vo.UserVO;
 import org.springframework.stereotype.Service;
@@ -24,11 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
 public class UserServiceImpl implements UserService {
     private final RedisCacheUtils cacheUtils;
     private final UserDAO userDAO;
-//    private final static Map<String, UserType> EMAIL_SUFFIX_AND_USER_TYPE_MAP =
-//            ImmutableMap.of(
-//                    "smail.nju.edu.cn", UserType.STUDENT,
-//                    "nju.edu.cn", UserType.TEACHER
-//            );
 
     public UserServiceImpl(UserDAO userDAO, RedisCacheUtils cacheUtils) {
         this.userDAO = userDAO;
@@ -55,7 +49,7 @@ public class UserServiceImpl implements UserService {
                 .setName(userDTO.getName())
                 .setEmail(userDTO.getEmail())
                 .setPhone(userDTO.getPhone())
-                .setPassword(EncryptUtils.encode(userDTO.getPassword()))
+                .setPassword(userDTO.getPassword())
                 .setType(userDTO.getType())
                 .setState(userDTO.getType() == UserType.TEACHER ? UserState.CHECKING : UserState.NORMAL));
 
@@ -83,7 +77,7 @@ public class UserServiceImpl implements UserService {
             throw HelperException.of(ExceptionType.NOT_FOUND, "邮箱或验证码错误");
         }
 
-        user.setPassword(EncryptUtils.encode(resetPasswordDTO.getPassword()));
+        user.setPassword(resetPasswordDTO.getPassword());
         userDAO.save(user);
         cacheUtils.remove(Consts.EMAIL_CACHE_NAME, resetPasswordDTO.getUsername());
     }
@@ -92,7 +86,7 @@ public class UserServiceImpl implements UserService {
     @Override
     public UserVO getUserByEmailAndPassword(String email, String password) {
         return userDAO
-                .findByEmailAndPassword(email, EncryptUtils.encode(password))
+                .findByEmailAndPassword(email, password)
                 .map(UserVO::new)
                 .orElseThrow(() -> HelperException.of(ExceptionType.NOT_FOUND, "邮箱或密码错误"));
     }