From 5dc873209e5b6ec2c4289e928831fad6888cfb98 Mon Sep 17 00:00:00 2001
From: 朱杰 <693337446@qq.com>
Date: 星期二, 25 五月 2021 14:02:34 +0800
Subject: [PATCH] add 增加验证码开关
---
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 32 ++++++++++++++++++--------------
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java | 7 ++++++-
ruoyi-admin/src/main/resources/application.yml | 2 ++
ruoyi-ui/src/views/login.vue | 12 ++++++++----
4 files changed, 34 insertions(+), 19 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
index 0988656..2f303ba 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
@@ -52,6 +52,12 @@
*/
@GetMapping("/captchaImage")
public AjaxResult getCode() {
+ Map<String, Object> ajax = new HashMap<>();
+ Boolean enabled = captchaProperties.getEnabled();
+ ajax.put("enabled", enabled);
+ if (!enabled) {
+ return AjaxResult.success(ajax);
+ }
// 淇濆瓨楠岃瘉鐮佷俊鎭�
String uuid = IdUtil.simpleUUID();
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
@@ -90,7 +96,6 @@
code = captcha.getCode();
}
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
- Map<String,Object> ajax = new HashMap<>();
ajax.put("uuid", uuid);
ajax.put("img", captcha.getImageBase64());
return AjaxResult.success(ajax);
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 535da0a..3838ff5 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -14,6 +14,8 @@
addressEnabled: false
captcha:
+ # 楠岃瘉鐮佸紑鍏�
+ enabled: true
# 楠岃瘉鐮佺被鍨� math 鏁扮粍璁$畻 char 瀛楃楠岃瘉
type: math
# line 绾挎骞叉壈 circle 鍦嗗湀骞叉壈 shear 鎵洸骞叉壈
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index ccf6940..bc22ca0 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -12,6 +12,7 @@
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.ip.IpUtils;
+import com.ruoyi.framework.config.properties.CaptchaProperties;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.system.service.ISysUserService;
@@ -41,7 +42,10 @@
@Autowired
private RedisCache redisCache;
- @Autowired
+ @Autowired
+ private CaptchaProperties captchaProperties;
+
+ @Autowired
private ISysUserService userService;
/**
@@ -55,19 +59,19 @@
*/
public String login(String username, String password, String code, String uuid)
{
- String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
- String captcha = redisCache.getCacheObject(verifyKey);
- redisCache.deleteObject(verifyKey);
- if (captcha == null)
- {
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
- throw new CaptchaExpireException();
- }
- if (!code.equalsIgnoreCase(captcha))
- {
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
- throw new CaptchaException();
- }
+ if(captchaProperties.getEnabled()) {
+ String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
+ String captcha = redisCache.getCacheObject(verifyKey);
+ redisCache.deleteObject(verifyKey);
+ if (captcha == null) {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
+ throw new CaptchaExpireException();
+ }
+ if (!code.equalsIgnoreCase(captcha)) {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
+ throw new CaptchaException();
+ }
+ }
// 鐢ㄦ埛楠岃瘉
Authentication authentication = null;
try
diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue
index d68f614..e8da56b 100644
--- a/ruoyi-ui/src/views/login.vue
+++ b/ruoyi-ui/src/views/login.vue
@@ -18,7 +18,7 @@
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
- <el-form-item prop="code">
+ <el-form-item prop="code" v-if="captchaEnabled">
<el-input
v-model="loginForm.code"
auto-complete="off"
@@ -81,7 +81,8 @@
code: [{ required: true, trigger: "change", message: "楠岃瘉鐮佷笉鑳戒负绌�" }]
},
loading: false,
- redirect: undefined
+ redirect: undefined,
+ captchaEnabled:false
};
},
watch: {
@@ -99,8 +100,11 @@
methods: {
getCode() {
getCodeImg().then(res => {
- this.codeUrl = "data:image/gif;base64," + res.data.img;
- this.loginForm.uuid = res.data.uuid;
+ this.captchaEnabled = res.data.enabled;
+ if(res.data.enabled){
+ this.codeUrl = "data:image/gif;base64," + res.data.img;
+ this.loginForm.uuid = res.data.uuid;
+ }
});
},
getCookie() {
--
Gitblit v1.9.3