From 1ed1752f678f769e43e9faa34809701850c7f727 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期四, 30 三月 2023 19:14:38 +0800 Subject: [PATCH] update 优化 验证码有效期 迁移到数据库 参数管理内 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/CaptchaController.java | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/CaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/CaptchaController.java index 757caf5..fec91b9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/CaptchaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/CaptchaController.java @@ -3,9 +3,9 @@ import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.captcha.AbstractCaptcha; import cn.hutool.captcha.generator.CodeGenerator; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; -import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.GlobalConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.SpringUtils; @@ -14,11 +14,11 @@ import com.ruoyi.common.mail.config.properties.MailProperties; import com.ruoyi.common.mail.utils.MailUtils; import com.ruoyi.common.redis.utils.RedisUtils; -import com.ruoyi.common.sms.config.properties.SmsProperties; import com.ruoyi.common.sms.core.SmsTemplate; import com.ruoyi.common.sms.entity.SmsResult; import com.ruoyi.common.web.config.properties.CaptchaProperties; import com.ruoyi.common.web.enums.CaptchaType; +import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.web.domain.vo.CaptchaVo; import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; @@ -47,8 +47,9 @@ public class CaptchaController { private final CaptchaProperties captchaProperties; - private final SmsProperties smsProperties; private final MailProperties mailProperties; + private final ISysConfigService configService; + /** * 鐭俊楠岃瘉鐮� @@ -57,14 +58,15 @@ */ @GetMapping("/sms/code") public R<Void> smsCode(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) { - if (!smsProperties.getEnabled()) { + if (!Convert.toBool(configService.selectConfigByKey("sys.account.smsEnabled"))) { return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚煭淇″姛鑳斤紒"); } String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber; String code = RandomUtil.randomNumbers(4); - RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); + Integer captchaExpired = Convert.toInt(configService.selectConfigByKey("sys.account.captchaExpired")); + RedisUtils.setCacheObject(key, code, Duration.ofMinutes(captchaExpired)); // 楠岃瘉鐮佹ā鏉縤d 鑷澶勭悊 (鏌ユ暟鎹簱鎴栧啓姝诲潎鍙�) - String templateId = ""; + String templateId = configService.selectConfigByKey("sys.account.templateId"); Map<String, String> map = new HashMap<>(1); map.put("code", code); SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class); @@ -88,9 +90,10 @@ } String key = GlobalConstants.CAPTCHA_CODE_KEY + email; String code = RandomUtil.randomNumbers(4); - RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); + Integer captchaExpired = Convert.toInt(configService.selectConfigByKey("sys.account.captchaExpired")); + RedisUtils.setCacheObject(key, code, Duration.ofMinutes(captchaExpired)); try { - MailUtils.sendText(email, "鐧诲綍楠岃瘉鐮�", "鎮ㄦ湰娆¢獙璇佺爜涓猴細" + code + "锛屾湁鏁堟�т负" + Constants.CAPTCHA_EXPIRATION + "鍒嗛挓锛岃灏藉揩濉啓銆�"); + MailUtils.sendText(email, "鐧诲綍楠岃瘉鐮�", "鎮ㄦ湰娆¢獙璇佺爜涓猴細%s锛屾湁鏁堟�т负%d鍒嗛挓锛岃灏藉揩濉啓銆�".formatted(code, captchaExpired)); } catch (Exception e) { log.error("楠岃瘉鐮佺煭淇″彂閫佸紓甯� => {}", e.getMessage()); return R.fail(e.getMessage()); @@ -126,7 +129,8 @@ Expression exp = parser.parseExpression(StringUtils.remove(code, "=")); code = exp.getValue(String.class); } - RedisUtils.setCacheObject(verifyKey, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); + Integer captchaExpired = Convert.toInt(configService.selectConfigByKey("sys.account.captchaExpired")); + RedisUtils.setCacheObject(verifyKey, code, Duration.ofMinutes(captchaExpired)); captchaVo.setUuid(uuid); captchaVo.setImg(captcha.getImageBase64()); return R.ok(captchaVo); -- Gitblit v1.9.3