Forráskód Böngészése

登录验证码重复问题

wks 2 éve
szülő
commit
2d08a145e8

+ 34 - 24
src/main/java/com/ydtech/modules/admin/controller/SysLoginController.java

@@ -75,7 +75,7 @@ public class SysLoginController {
 
     private final SysPasswordService sysPasswordService;
 
-    private final SysUserLinkSysService  sysUserLinkSysService;
+    private final SysUserLinkSysService sysUserLinkSysService;
 
     private final SysPartnerService sysPartnerService;
 
@@ -109,14 +109,24 @@ public class SysLoginController {
     public void captchaByIdNew(HttpServletResponse response, String captchaId) throws IOException {
         response.setHeader("Cache-Control", "no-store, no-cache");
         response.setContentType("image/jpeg");
-        // 生成文字验证码
-        String text = producer.createText();
+        String text;
+
+        String imageId = redisTemplate.opsForValue().get(captchaId);
+        // 重复验证码问题
+        if (StringUtils.isNotEmpty(imageId)) {
+            text = imageId;
+        } else {
+            // 生成文字验证码
+            text = producer.createText();
+        }
         // 生成图片验证码
         BufferedImage image = producer.createImage(text);
-        String codeUuid = captchaId;
-        if (StringUtils.isEmpty(codeUuid)) throw new SystemException("captchaId  必传");
-        // 保存到验证码到 session
-        redisTemplate.opsForValue().set(codeUuid, text, 120, TimeUnit.SECONDS);
+        if (StringUtils.isEmpty(captchaId)) {
+            throw new SystemException("captchaId  必传");
+        }
+
+        // 保存到验证码到 redis
+        redisTemplate.opsForValue().set(captchaId, text, 120, TimeUnit.SECONDS);
         ServletOutputStream out = response.getOutputStream();
         ImageIO.write(image, "jpg", out);
         IOUtils.closeQuietly(out);
@@ -148,13 +158,13 @@ public class SysLoginController {
         /**
          *  多个系统登录
          * */
-        if(!SysConstants.ADMIN.equalsIgnoreCase(username) && !"1".equals(loginBean.getSysId())){
+        if (!SysConstants.ADMIN.equalsIgnoreCase(username) && !"1".equals(loginBean.getSysId())) {
             LambdaQueryWrapper<SysUserLinkSys> sysLambdaQueryWrapper = new LambdaQueryWrapper<>();
             sysLambdaQueryWrapper.eq(SysUserLinkSys::getUserId, user.getId());
             sysLambdaQueryWrapper.eq(SysUserLinkSys::getSysId, loginBean.getSysId());
             List<SysUserLinkSys> list = sysUserLinkSysService.list(sysLambdaQueryWrapper);
-            if(list==null || list.size()==0){
-                throw  new SystemException("该用户未授权");
+            if (list == null || list.size() == 0) {
+                throw new SystemException("该用户未授权");
             }
         }
         //验证用户
@@ -204,16 +214,16 @@ public class SysLoginController {
         /**
          *  多个系统登录  添加默认参数解决手机端登陆问题
          * */
-        if(StringUtils.isBlank(loginBean.getSysId())){
+        if (StringUtils.isBlank(loginBean.getSysId())) {
             loginBean.setSysId("1");
         }
-        if(!SysConstants.ADMIN.equalsIgnoreCase(username) && !"1".equals(loginBean.getSysId())){
+        if (!SysConstants.ADMIN.equalsIgnoreCase(username) && !"1".equals(loginBean.getSysId())) {
             LambdaQueryWrapper<SysUserLinkSys> sysLambdaQueryWrapper = new LambdaQueryWrapper<>();
             sysLambdaQueryWrapper.eq(SysUserLinkSys::getUserId, user.getId());
             sysLambdaQueryWrapper.eq(SysUserLinkSys::getSysId, loginBean.getSysId());
             List<SysUserLinkSys> list = sysUserLinkSysService.list(sysLambdaQueryWrapper);
-            if(list==null || list.size()==0){
-                throw  new SystemException("该用户未授权");
+            if (list == null || list.size() == 0) {
+                throw new SystemException("该用户未授权");
             }
         }
 
@@ -259,13 +269,13 @@ public class SysLoginController {
         //校验登录用户是否为合伙人或者是机构负责人
         boolean a = sysPartnerService.checkPartner(user.getId());
         boolean b = sysAgencyLeaderService.checkUserId(user.getId());
-        if (a ) {
+        if (a) {
             //类型:1.合伙人;2机构负责人
             aapLoginVo.setType(1);
-        }else if (b) {
+        } else if (b) {
             aapLoginVo.setType(2);
-        }else {
-            throw  new SystemException("该用户无权限登录AAP,只能合伙人或者机构负责人才能登录!");
+        } else {
+            throw new SystemException("该用户无权限登录AAP,只能合伙人或者机构负责人才能登录!");
 
         }
 
@@ -341,13 +351,13 @@ public class SysLoginController {
         //校验登录用户是否为合伙人或者是机构负责人
         boolean a = sysPartnerService.checkPartner(user.getId());
         boolean b = sysAgencyLeaderService.checkUserId(user.getId());
-        if (a ) {
+        if (a) {
             //类型:1.合伙人;2机构负责人
             aapLoginVo.setType(1);
-        }else if (b) {
+        } else if (b) {
             aapLoginVo.setType(2);
-        }else {
-            throw  new SystemException("该用户无权限登录AAP,只能合伙人或者机构负责人才能登录!");
+        } else {
+            throw new SystemException("该用户无权限登录AAP,只能合伙人或者机构负责人才能登录!");
 
         }
         String msg = redisTemplate.opsForValue().get(PHONE_VERIFICATION_CODE_KEY + phone);
@@ -595,12 +605,12 @@ public class SysLoginController {
     }
 
     /**
-     *  轮询接口 获取二维码状态
+     * 轮询接口 获取二维码状态
      */
     @GetMapping("/getQrCodeStatus")
     @ApiOperation(value = "获取登录二维码状态")
     public HttpResult getQrCodeStatus(HttpServletRequest request, HttpServletResponse response,
-        @RequestParam String uuid) throws JsonProcessingException {
+                                      @RequestParam String uuid) throws JsonProcessingException {
 
         Map<Object, Object> resultMap = new HashMap<>();