From 6ebe8da9b42e773f48260c6d1e0b90307bde5303 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期一, 27 十一月 2023 09:28:00 +0800
Subject: [PATCH] 增加验证码

---
 assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
index 9bfc0cd..6ceaac1 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
+++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
@@ -1,6 +1,7 @@
 package com.gkhy.assess.system.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.assess.common.api.CommonPage;
 import com.gkhy.assess.common.constant.CacheConstant;
@@ -57,6 +58,8 @@
 
     @Override
     public AccountVO login(LoginBody loginBody) {
+        // 验证码校验
+        validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid());
         UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginBody.getUsername(), loginBody.getPassword(), false);
         Subject subject= SecurityUtils.getSubject();
         String msg ;
@@ -84,6 +87,32 @@
         }
     }
 
+    /**
+     * 校验验证码
+     *
+     * @param username 用户名
+     * @param code 验证码
+     * @param uuid 唯一标识
+     * @return 结果
+     */
+    public void validateCaptcha(String username, String code, String uuid)
+    {
+            if(StrUtil.isBlank(code)||StrUtil.isBlank(uuid)){
+                throw new ApiException("验证码或验证码标识为空");
+            }
+            String verifyKey = CacheConstant.CAPTCHA_CODE_KEY +uuid;
+            String captcha = (String) redisUtils.get(verifyKey);
+            redisUtils.del(verifyKey);
+            if (StrUtil.isBlank(captcha))
+            {
+                throw new ApiException("验证码已失效");
+            }
+            if (!code.equalsIgnoreCase(captcha))
+            {
+                throw new ApiException("验证码不正确");
+            }
+    }
+
     @Override
     public void logout() {
         String jwtToken = request.getHeader(JwtTokenUtil.USER_LOGIN_TOKEN);

--
Gitblit v1.9.2