| 
					
				 | 
			
			
				@@ -4,12 +4,12 @@ import com.ruoyi.common.constant.Constants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.common.core.domain.model.LoginUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.common.core.redis.RedisCache; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.common.exception.CustomException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ruoyi.common.exception.user.CaptchaException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ruoyi.common.exception.user.CaptchaExpireException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.common.exception.user.UserPasswordNotMatchException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.common.utils.MessageUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ruoyi.common.utils.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.framework.manager.AsyncManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.framework.manager.factory.AsyncFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ruoyi.system.domain.SysUserOnline; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.security.authentication.AuthenticationManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.security.authentication.BadCredentialsException; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -18,6 +18,9 @@ import org.springframework.security.core.Authentication; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Collection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 登录校验方法 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -48,14 +51,14 @@ public class SysLoginService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String captcha = redisCache.getCacheObject(verifyKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         redisCache.deleteObject(verifyKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (captcha == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /*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 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -71,6 +74,18 @@ public class SysLoginService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 throw new CustomException(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (String key : keys) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LoginUser user = redisCache.getCacheObject(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isNotEmpty(username) && StringUtils.isNotNull(user.getUser())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (StringUtils.equals(username, user.getUsername())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 若发现有其他用户登录,顶替掉其他用户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + user.getToken()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         LoginUser loginUser = (LoginUser) authentication.getPrincipal(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 生成token 
			 |