Jelajahi Sumber

优化总后台登录验证功能

15376779826 14 jam lalu
induk
melakukan
a589d8f76d

+ 3 - 2
fs-admin/src/main/java/com/fs/web/controller/system/SysLoginController.java

@@ -11,6 +11,7 @@ import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.PatternUtils;
 import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.ip.IpUtils;
 import com.fs.framework.web.service.TokenService;
 import com.fs.his.utils.ConfigUtil;
@@ -216,7 +217,7 @@ public class SysLoginController
 
             String ipAddr = IpUtils.getIpAddr(ServletUtils.getRequest());
             String loginIp = sysUser.getLoginIp();
-            if (com.fs.common.utils.StringUtils.isEmpty(loginIp)) {
+            if (StringUtils.isEmpty(loginIp)) {
                 sysUser.setLoginIp(ipAddr.trim());
             } else {
                 List<String> ipList = Arrays.stream(loginIp.split(","))
@@ -241,7 +242,7 @@ public class SysLoginController
                 return AjaxResult.success(Constants.TOKEN, token);
             }
             return AjaxResult.success("waiting");
-        }else if (com.fs.common.utils.StringUtils.isNotEmpty(status)&&status.startsWith("error:")) {
+        }else if (StringUtils.isNotEmpty(status)&&status.startsWith("error:")) {
             // 把错误返回给前端
             throw new ServiceException(status);
         }

+ 25 - 21
fs-framework/src/main/java/com/fs/framework/web/service/SysLoginService.java

@@ -36,7 +36,7 @@ import java.util.concurrent.TimeUnit;
 
 /**
  * 登录校验方法
- * 
+ *
 
  */
 @Component
@@ -50,7 +50,7 @@ public class SysLoginService
 
     @Autowired
     private RedisCache redisCache;
-    
+
     @Autowired
     private ISysUserService userService;
 
@@ -70,7 +70,7 @@ public class SysLoginService
 
     /**
      * 登录验证
-     * 
+     *
      * @param username 用户名
      * @param password 密码
      * @param code 验证码
@@ -115,7 +115,7 @@ public class SysLoginService
 
     /**
      * 校验验证码
-     * 
+     *
      * @param username 用户名
      * @param code 验证码
      * @param uuid 唯一标识
@@ -141,25 +141,29 @@ public class SysLoginService
     /**
      * 记录登录信息
      */
-    public void recordLoginInfo(SysUser user)
-    {
+    public void recordLoginInfo(SysUser user) {
         String ipAddr = IpUtils.getIpAddr(ServletUtils.getRequest());
         String loginIp = user.getLoginIp();
-        if (com.fs.common.utils.StringUtils.isEmpty(loginIp)) {
-            user.setLoginIp(ipAddr);
-        } else {
-            List<String> ipList = new ArrayList<>(Arrays.asList(loginIp.split(",")));
-            if (!ipList.contains(ipAddr)) {
-                ipList.add(ipAddr);
-                user.setLoginIp(String.join(",", ipList));
-            }
+
+        List<String> ipList = new ArrayList<>();
+
+        if (com.fs.common.utils.StringUtils.isNotEmpty(loginIp)) {
+            ipList.addAll(Arrays.asList(loginIp.split(",")));
         }
-        user.setLoginIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
+        ipList.remove(ipAddr);
+        // 如果已满 10 个,清理第一个
+        if (ipList.size() >= 10) {
+            ipList.remove(0);
+        }
+        // 新 IP 放到最后
+        ipList.add(ipAddr);
+        user.setLoginIp(String.join(",", ipList));
         user.setLoginDate(DateUtils.getNowDate());
         userService.updateUserProfile(user);
     }
 
 
+
     public boolean checkIsNeedCheck(String username, String password, String code, String uuid)
     {
         String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
@@ -199,12 +203,12 @@ public class SysLoginService
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         //查询当前登录用户信息
         SysUser sysUser = userService.selectUserById(loginUser.getUserId());
-        Long[] userIds = new Long[]{236L, 246L, 247L, 253L,119L};
-        for (Long userId : userIds) {
-            if (userId.equals(sysUser.getUserId())){
-                return false;
-            }
-        }
+//        Long[] userIds = new Long[]{236L, 246L, 247L, 253L,119L};
+//        for (Long userId : userIds) {
+//            if (userId.equals(sysUser.getUserId())){
+//                return false;
+//            }
+//        }
 
         // 判断是否开启了扫码配置
         if (ObjectUtil.isEmpty(isNeedScan) || !isNeedScan){

+ 2 - 2
fs-service/src/main/resources/application-druid-jnmy-test.yml

@@ -232,7 +232,7 @@ isNewWxMerchant: true
 ipad:
     url: http://localhost:8999/dev-api
     companyId: 13
-#wechat:
+wechat:
 #    company:
 #        appid: wxd7c1e221622a0ccf
 #        secret: 70d3ed4f8eb68cca0cf525b8ce07405d
@@ -241,6 +241,6 @@ ipad:
 #        appid: wxd7c1e221622a0ccf
 #        secret: 70d3ed4f8eb68cca0cf525b8ce07405d
 #        redirectUri: http://ta6d97ec.natappfree.cc/callback
-#    isNeedScan: true
+    isNeedScan: true