ソースを参照

行为验证码登录接口二次校验逻辑添加

谭斌 2 年 前
コミット
27ad5b31f0

+ 5 - 4
authorize-api-service/src/main/java/com/xy/service/impl/CaptchaServiceImpl.java

@@ -5,8 +5,8 @@ import com.anji.captcha.model.common.RepCodeEnum;
 import com.anji.captcha.model.common.ResponseModel;
 import com.anji.captcha.model.vo.CaptchaVO;
 import com.anji.captcha.util.StringUtils;
-import com.xy.error.CommRuntimeException;
 import com.xy.service.CaptchaService;
+import com.xy.utils.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -29,16 +29,17 @@ public class CaptchaServiceImpl implements CaptchaService {
     private final com.anji.captcha.service.CaptchaService captchaService;
 
     @Override
-    public Boolean reVerification(String captchaVerification) {
+    public R<String> reVerification(String captchaVerification) {
         CaptchaVO captchaVO = new CaptchaVO();
         captchaVO.setCaptchaVerification(captchaVerification);
         ResponseModel response = captchaService.verification(captchaVO);
         if (response.isSuccess() == false) {
             String repCode = response.getRepCode();
             //验证码校验失败,返回信息告诉前端
-            throw new CommRuntimeException(getRepDesc(repCode));
+            return R.fail(getRepDesc(repCode));
         }
-        return Boolean.TRUE;
+        return R.ok();
+
     }
 
     /**

+ 16 - 0
authorize-api-service/src/main/java/com/xy/service/impl/SysWorkUserServiceImpl.java

@@ -2,6 +2,7 @@ package com.xy.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.SecureUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -15,6 +16,7 @@ import com.xy.dto.SysWorkUser.*;
 import com.xy.entity.*;
 import com.xy.mapper.*;
 import com.xy.redis.RedisCache;
+import com.xy.service.CaptchaService;
 import com.xy.service.SysUserDeptService;
 import com.xy.service.SysUserRoleService;
 import com.xy.service.SysWorkUserService;
@@ -58,6 +60,9 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
 
     private final SysDeptMapper sysDeptMapper;
 
+
+    private final CaptchaService captchaService;
+
     @Override
     @ApiOperation(value = "注册", notes = "注册")
     @Transactional(rollbackFor = Exception.class)
@@ -156,6 +161,17 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
             }
             sysWorkUser = getOne(new LambdaQueryWrapper<SysWorkUser>().eq(SysWorkUser::getPhone, loginDto.getLoginName()));
         } else {
+            //验证码滑块二次校验后端
+            String pointJson = loginDto.getPointJson();
+            if (StrUtil.isEmpty(pointJson)) {
+                return R.fail("请进行登录滑块验证码验证!");
+            }
+            R<String> reVerification = captchaService.reVerification(pointJson);
+            String msg = reVerification.getMsg();
+            if (StrUtil.isNotEmpty(msg)) {
+                //交易错误信息发送给前端
+                return reVerification;
+            }
             //账号、邮箱、手机、密码登录
             LambdaQueryWrapper<SysWorkUser> lambdaQueryWrapper = new LambdaQueryWrapper<SysWorkUser>()
                     .and(sysWorkUserLambdaQueryWrapper -> sysWorkUserLambdaQueryWrapper

+ 7 - 0
authorize-api/src/main/java/com/xy/dto/SysWorkUser/LoginDto.java

@@ -29,4 +29,11 @@ public class LoginDto {
     @ApiModelProperty("短信验证码")
     private String code;
 
+
+    /**
+     * 滑块验证码 点坐标(base64加密传输)
+     */
+    private String pointJson;
+
+
 }

+ 3 - 2
authorize-api/src/main/java/com/xy/service/CaptchaService.java

@@ -1,6 +1,7 @@
 package com.xy.service;
 
 import com.xy.annotate.RestMappingController;
+import com.xy.utils.R;
 
 /***
  * 验证码服务
@@ -14,10 +15,10 @@ public interface CaptchaService {
     /**
      * 验证码二次校验 后端用
      *
-     * @param captchaVerification
+     * @param captchaVerification 后台二次校验参数
      * @return
      */
-    Boolean reVerification(String captchaVerification);
+    R<String> reVerification(String captchaVerification);
 
 
 }