Browse Source

add 增加验证码开关

朱杰 3 năm trước cách đây
mục cha
commit
5dc873209e

+ 6 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java

@@ -52,6 +52,12 @@ public class CaptchaController {
 	 */
 	@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 @@ public class CaptchaController {
 			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);

+ 2 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -14,6 +14,8 @@ ruoyi:
   addressEnabled: false
 
 captcha:
+  # 验证码开关
+  enabled: true
   # 验证码类型 math 数组计算 char 字符验证
   type: math
   # line 线段干扰 circle 圆圈干扰 shear 扭曲干扰

+ 18 - 14
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java

@@ -12,6 +12,7 @@ import com.ruoyi.common.utils.DateUtils;
 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 @@ public class SysLoginService
     @Autowired
     private RedisCache redisCache;
 
-    @Autowired
+	@Autowired
+	private CaptchaProperties captchaProperties;
+
+	@Autowired
     private ISysUserService userService;
 
     /**
@@ -55,19 +59,19 @@ public class SysLoginService
      */
     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

+ 8 - 4
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 @@ export default {
         code: [{ required: true, trigger: "change", message: "验证码不能为空" }]
       },
       loading: false,
-      redirect: undefined
+      redirect: undefined,
+      captchaEnabled:false
     };
   },
   watch: {
@@ -99,8 +100,11 @@ export default {
   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() {