| 
															
																@@ -21,6 +21,7 @@ import com.ruoyi.common.utils.ServletUtils; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.ruoyi.common.utils.ip.IpUtils;
 
															 | 
															
															 | 
															
																 import com.ruoyi.common.utils.ip.IpUtils;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.ruoyi.framework.manager.AsyncManager;
 
															 | 
															
															 | 
															
																 import com.ruoyi.framework.manager.AsyncManager;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.ruoyi.framework.manager.factory.AsyncFactory;
 
															 | 
															
															 | 
															
																 import com.ruoyi.framework.manager.factory.AsyncFactory;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+import com.ruoyi.system.service.ISysConfigService;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.ruoyi.system.service.ISysUserService;
 
															 | 
															
															 | 
															
																 import com.ruoyi.system.service.ISysUserService;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 /**
 
															 | 
															
															 | 
															
																 /**
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -43,6 +44,9 @@ public class SysLoginService 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     @Autowired
 
															 | 
															
															 | 
															
																     @Autowired
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     private ISysUserService userService;
 
															 | 
															
															 | 
															
																     private ISysUserService userService;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    @Autowired
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    private ISysConfigService configService;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     /**
 
															 | 
															
															 | 
															
																     /**
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																      * 登录验证
 
															 | 
															
															 | 
															
																      * 登录验证
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																      * 
 
															 | 
															
															 | 
															
																      * 
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -54,18 +58,11 @@ public class SysLoginService 
															 | 
														
													
												
													
														
															| 
															 | 
															
																      */
 
															 | 
															
															 | 
															
																      */
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     public String login(String username, String password, String code, String uuid)
 
															 | 
															
															 | 
															
																     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))
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        boolean captchaOnOff = configService.selectCaptchaOnOff();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        // 验证码开关
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (captchaOnOff)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            throw new CaptchaException();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            validateCapcha(username, code, uuid);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         // 用户验证
 
															 | 
															
															 | 
															
																         // 用户验证
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         Authentication authentication = null;
 
															 | 
															
															 | 
															
																         Authentication authentication = null;
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -95,6 +92,31 @@ public class SysLoginService 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         return tokenService.createToken(loginUser);
 
															 | 
															
															 | 
															
																         return tokenService.createToken(loginUser);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     }
 
															 | 
															
															 | 
															
																     }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    /**
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+     * 校验验证码
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+     * 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+     * @param username 用户名
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+     * @param code 验证码
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+     * @param uuid 唯一标识
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+     * @return 结果
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+     */
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    public void validateCapcha(String username, 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();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     /**
 
															 | 
															
															 | 
															
																     /**
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																      * 记录登录信息
 
															 | 
															
															 | 
															
																      * 记录登录信息
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																      */
 
															 | 
															
															 | 
															
																      */
 
															 |