From 5402e7f759edd48d67e56d25e41ce0a641dbc02d Mon Sep 17 00:00:00 2001 From: Aiden2014 Date: Wed, 29 Nov 2023 10:28:16 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E5=BD=93=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E7=BB=91=E5=AE=9A=E5=AF=86=E7=A0=81=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E5=86=8D=E6=AC=A1=E7=BB=91=E5=AE=9A=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E6=97=B6=E5=AD=98=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9A=84?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E5=8F=98=E6=88=90=E6=98=8E=E6=96=87=E7=9A=84?= =?UTF-8?q?bug=20feat=20=E5=B0=86=E8=A7=A3=E5=AF=86=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=E9=83=A8=E5=88=86=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sast/evento/common/enums/ErrorEnum.java | 2 +- .../evento/service/impl/LoginServiceImpl.java | 36 +++++++++---------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/main/java/sast/evento/common/enums/ErrorEnum.java b/src/main/java/sast/evento/common/enums/ErrorEnum.java index ce601fb..faba2a4 100644 --- a/src/main/java/sast/evento/common/enums/ErrorEnum.java +++ b/src/main/java/sast/evento/common/enums/ErrorEnum.java @@ -26,7 +26,7 @@ public enum ErrorEnum { EVENT_NOT_EXIST(1008,"event not exist"), /* 登录异常 */ LOGIN_ERROR(1009,"login failed"), - LOGIN_EXPIRE(1010,"login expire"), + LOGIN_EXPIRE(1010,"login expired"), NOT_REGISTER(1011,"user info not exist please register first"), /* 其他服务错误 */ diff --git a/src/main/java/sast/evento/service/impl/LoginServiceImpl.java b/src/main/java/sast/evento/service/impl/LoginServiceImpl.java index 1a0cdd8..a5581f3 100644 --- a/src/main/java/sast/evento/service/impl/LoginServiceImpl.java +++ b/src/main/java/sast/evento/service/impl/LoginServiceImpl.java @@ -184,21 +184,13 @@ public void checkTicket(String studentId, String ticket) { @Transactional(rollbackFor = Exception.class) public void bindPassword(String studentId, String password) { studentId = studentId.toLowerCase(); - String privateKeyStr = (String) redisUtil.get(LOGIN_KEY + studentId); - if (privateKeyStr == null || privateKeyStr.isEmpty()) { - throw new LocalRunTimeException(ErrorEnum.LOGIN_EXPIRE, "login failed please try again"); - } - try { - password = RSAUtil.decryptByPrivateKey(password, privateKeyStr); - } catch (Exception e) { - throw new LocalRunTimeException(ErrorEnum.LOGIN_ERROR, "login failed please try again"); - } + password = decryptPassword(studentId,password); String salt = MD5Util.getSalt(5); UserPassword userPassword = userPasswordMapper.selectOne(Wrappers.lambdaQuery(UserPassword.class) .eq(UserPassword::getStudentId, studentId) .last("for update")); if (userPassword != null) { - userPassword.setPassword(password); + userPassword.setPassword(MD5Util.md5Encode(password, salt)); userPassword.setSalt(salt); userPasswordMapper.updateById(userPassword); } else { @@ -281,15 +273,7 @@ private void setCommonInfo(User local, UserInfo userInfo) { private void checkPassword(String studentId, String password) { studentId = studentId.toLowerCase(); - String privateKeyStr = (String) redisUtil.get(LOGIN_KEY + studentId); - if (privateKeyStr == null || privateKeyStr.isEmpty()) { - throw new LocalRunTimeException(ErrorEnum.LOGIN_EXPIRE, "login failed please try again"); - } - try { - password = RSAUtil.decryptByPrivateKey(password, privateKeyStr); - } catch (Exception e) { - throw new LocalRunTimeException(ErrorEnum.LOGIN_ERROR, "login failed please try again"); - } + password = decryptPassword(studentId,password); UserPassword userPassword = userPasswordMapper.selectOne(Wrappers.lambdaQuery(UserPassword.class) .eq(UserPassword::getStudentId, studentId)); if (userPassword == null) { @@ -320,5 +304,17 @@ private String generateToken(UserModel user) { return jwtUtil.generateToken(payload); } - + // 使用密钥解密密码 + private String decryptPassword(String studentId, String password){ + String privateKeyStr = (String) redisUtil.get(LOGIN_KEY + studentId); + if (privateKeyStr == null || privateKeyStr.isEmpty()) { + throw new LocalRunTimeException(ErrorEnum.LOGIN_EXPIRE, "login expired please try again"); + } + try { + password = RSAUtil.decryptByPrivateKey(password, privateKeyStr); + } catch (Exception e) { + throw new LocalRunTimeException(ErrorEnum.LOGIN_ERROR, "login failed please try again"); + } + return password; + } }