浏览代码

fix(auth): 修复手机验证码登录手机号验证逻辑

- 移除手机号比对逻辑,避免匹配失败导致错误
- 替换短信发送目标手机号为用户真实手机号
- 修正短信验证码缓存的Redis Key使用用户手机号
- 优化手机验证码发送接口的返回逻辑及日志记录
- 确保手机号为空时返回正确的错误提示和状态码
zhangxf 3 周之前
父节点
当前提交
039ed6fe16
共有 1 个文件被更改,包括 6 次插入 和 8 次删除
  1. 6 8
      src/main/java/com/jtzx/crm/module/api/web/auth/AdminAuthController.java

+ 6 - 8
src/main/java/com/jtzx/crm/module/api/web/auth/AdminAuthController.java

@@ -160,7 +160,7 @@ public class AdminAuthController {
 //        SysUserLoginBO userInfo = this.getLoginUserInfo(dto.getMobile());
         // RPC调用, 失败抛异常, 成功返回用户信息
         SysUserBO userInfo = sysUserService.getUserInfoByPin(dto.getUsername());
-        if (userInfo == null || StrUtil.isEmpty(userInfo.getPhoneNo()) || !userInfo.getPhoneNo().equals(dto.getMobile())) {
+        if (userInfo == null || StrUtil.isEmpty(userInfo.getPhoneNo())) {
             resultData.setStatus(false);
             if (userInfo == null) {
                 //跳到账号密码登陆页面
@@ -170,24 +170,23 @@ public class AdminAuthController {
                 //跳到账号密码登陆页面
                 return ApiResult.data("手机号不存在", resultData).setCode(401);
             }
-            if (!userInfo.getPhoneNo().equals(dto.getMobile())) {
-                return ApiResult.data("手机号错误", resultData).setCode(406);
-            }
+//            if (!userInfo.getPhoneNo().equals(dto.getMobile())) {
+//                return ApiResult.data("手机号错误", resultData).setCode(406);
+//            }
         }
         String smsCode = SmsUtils.getRandomInt(RedisConstant.SMS_CODE_LENGTH);
         log.info("smsCode--------->{}", smsCode);
         LinkedHashMap<String, String> messages = Maps.newLinkedHashMap();
         messages.put("code", smsCode);
-        SmsResponse smsResponse = SmsFactory.getSmsBlend().sendMessage(dto.getMobile(), messages);
+        SmsResponse smsResponse = SmsFactory.getSmsBlend().sendMessage(userInfo.getPhoneNo(), messages);
         if (smsResponse.isSuccess()) {
-            service.set(RedisConstant.SMS_CODE_PREFIX + dto.getMobile(), smsCode, RedisConstant.SMS_CODE_DURATION);
+            service.set(RedisConstant.SMS_CODE_PREFIX + userInfo.getPhoneNo(), smsCode, RedisConstant.SMS_CODE_DURATION);
             resultData.setShowPicCode(false);
             //返回图形验证码
             resultData.setCaptchaVO(null);
             return ApiResult.data("发送成功", resultData);
         }
         return ApiResult.data("发送失败", resultData).setCode(406);
-
     }
 
     @SysLog(value = "第三步后台用户手机验证码登录", extension = SysLogAspectExtensionForSysUserSmsCodeLogin.class, queryIPLocation = true)
@@ -195,7 +194,6 @@ public class AdminAuthController {
     @UseRateLimit(duration = 600, max = 5, strategy = SmsCodeLoginRateLimitStrategy.class, mark = "smsCodeLogin")
     @PostMapping(value = "/auth/smsCodeLogin")
     public ApiResult<LoginRespDataVO> smsCodeLogin(@RequestBody SysUserSmsCodeLoginDTO dto) {
-
         //限流时redis中的key
         String key = RedisConstant.SMS_CODE_LOGIN_REDIS_KEY_PREFIX + "smsCodeLogin:" + dto.getMobile() + ":smsCodeLogin";
         LoginRespDataVO resultData = this.getResultData(null, key);