From 495253345194da937f134cfb2adb9eaf00c413d5 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期日, 08 十月 2023 14:26:10 +0800
Subject: [PATCH] 修改令牌的IP检查功能

---
 src/main/java/com/moon/server/controller/sys/TokenController.java |   11 ++++-
 src/main/java/com/moon/server/interceptor/AuthInterceptor.java    |    9 ++--
 src/main/java/com/moon/server/service/sys/ProxyService.java       |   12 +++++
 src/main/java/com/moon/server/service/sys/TokenService.java       |   35 +++++++++--------
 4 files changed, 43 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/moon/server/controller/sys/TokenController.java b/src/main/java/com/moon/server/controller/sys/TokenController.java
index 4f6f540..dfe7a27 100644
--- a/src/main/java/com/moon/server/controller/sys/TokenController.java
+++ b/src/main/java/com/moon/server/controller/sys/TokenController.java
@@ -79,7 +79,7 @@
     }
 
     @SysLog()
-    @ApiOperation(value = "鎻掑叆涓�鏉℃柊浠ょ墝")
+    @ApiOperation(value = "鍒涘缓鏂颁护鐗�")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "type", value = "浠ょ墝绫诲埆锛�0-涓存椂锛�1-鍥哄畾", dataType = "Integer", paramType = "query", example = "1"),
             @ApiImplicitParam(name = "min", value = "鍒嗛挓鏁帮細榛樿1涓湀", dataType = "Integer", paramType = "query", example = "43200")
@@ -94,7 +94,14 @@
                 min = SettingData.TOKEN_EXPIRE;
             }
 
-            return success(null);
+            UserEntity ue = tokenService.getCurrentUser(req);
+            TokenEntity te = tokenService.getNewToken(type, min, ue, req);
+            int rows = tokenService.insertToken(te);
+            if (0 == rows) {
+                return fail("鍒涘缓浠ょ墝澶辫触", null);
+            }
+
+            return success(te);
         } catch (Exception ex) {
             return fail(ex, null);
         }
diff --git a/src/main/java/com/moon/server/interceptor/AuthInterceptor.java b/src/main/java/com/moon/server/interceptor/AuthInterceptor.java
index f249801..5a704f1 100644
--- a/src/main/java/com/moon/server/interceptor/AuthInterceptor.java
+++ b/src/main/java/com/moon/server/interceptor/AuthInterceptor.java
@@ -66,7 +66,7 @@
             }
 
             // 3.鑾峰彇鐢ㄦ埛
-            UserEntity ue = sysService.tokenService.getCurrentUser(request);
+            UserEntity ue = sysService.tokenService.getUserByToken(token);
             if (ue == null) {
                 return WebHelper.writeStr2Page(response, NO_LOGIN);
             }
@@ -87,9 +87,8 @@
                 return true;
             }
 
-            // 7.妫�鏌ョ櫧鍚嶅崟
+            // 7.妫�鏌ョ櫧鍚嶅崟鍜孖P涓�鑷存��
             if (!checkWhiteList(ip, request)) {
-                // 妫�鏌P涓�鑷存��
                 if (!checkIpSource(ip, token)) {
                     return WebHelper.writeStr2Page(response, ILLEGAL_TOKEN);
                 }
@@ -174,11 +173,11 @@
     }
 
     /**
-     * 妫�鏌P涓�鑷存��
+     * 妫�鏌P涓�鑷存�э細鍥哄畾浠ょ墝涓嶆鏌�
      */
     private boolean checkIpSource(String ip, String token) {
         TokenEntity te = sysService.tokenService.getEntityByToken(token);
 
-        return te.getIp().equals(ip);
+        return StaticData.I1 == te.getType() || te.getIp().equals(ip);
     }
 }
diff --git a/src/main/java/com/moon/server/service/sys/ProxyService.java b/src/main/java/com/moon/server/service/sys/ProxyService.java
index 2d097d8..a64b1fa 100644
--- a/src/main/java/com/moon/server/service/sys/ProxyService.java
+++ b/src/main/java/com/moon/server/service/sys/ProxyService.java
@@ -4,6 +4,7 @@
 import com.moon.server.entity.all.*;
 import com.moon.server.entity.sys.ResEntity;
 import com.moon.server.entity.sys.ResLogEntity;
+import com.moon.server.entity.sys.TokenEntity;
 import com.moon.server.entity.sys.UserEntity;
 import com.moon.server.helper.AsyncHelper;
 import com.moon.server.helper.HttpHelper;
@@ -108,7 +109,7 @@
         }
         // 7.妫�鏌ョ櫧鍚嶅崟鍜孖P涓�鑷存��
         if (!checkWhiteList(ip, req)) {
-            if (!ip.equals(sysService.tokenService.getEntityByToken(token).getIp())) {
+            if (!checkIpSource(ip, token)) {
                 return WebHelper.writeStr2Page(res, AuthInterceptor.ILLEGAL_TOKEN);
             }
         }
@@ -145,6 +146,15 @@
     }
 
     /**
+     * 妫�鏌P涓�鑷存�э細鍥哄畾浠ょ墝涓嶆鏌�
+     */
+    private boolean checkIpSource(String ip, String token) {
+        TokenEntity te = sysService.tokenService.getEntityByToken(token);
+
+        return StaticData.I1 == te.getType() || te.getIp().equals(ip);
+    }
+
+    /**
      * 妫�鏌ヨ祫婧愭潈闄�
      */
     private ResEntity getResEntity(UserEntity ue, int resId) {
diff --git a/src/main/java/com/moon/server/service/sys/TokenService.java b/src/main/java/com/moon/server/service/sys/TokenService.java
index 30d3715..40b0698 100644
--- a/src/main/java/com/moon/server/service/sys/TokenService.java
+++ b/src/main/java/com/moon/server/service/sys/TokenService.java
@@ -23,7 +23,6 @@
  * @author sws
  * @date 2022-09-28
  */
-
 @Service
 public class TokenService implements TokenMapper {
     @Autowired
@@ -121,6 +120,7 @@
     @Override
     public Integer updateTokenExpire(TokenEntity tokenEntity) {
         clearCache(tokenEntity.getToken());
+
         return tokenMapper.updateTokenExpire(tokenEntity);
     }
 
@@ -128,11 +128,18 @@
      * 鑾峰彇鏂扮殑浠ょ墝瀹炰綋绫�
      */
     public TokenEntity getNewToken(UserEntity ue, HttpServletRequest req) {
+        return getNewToken(0, SettingData.TOKEN_EXPIRE, ue, req);
+    }
+
+    /**
+     * 鑾峰彇鏂扮殑浠ょ墝瀹炰綋绫�
+     */
+    public TokenEntity getNewToken(Integer type, Integer min, UserEntity ue, HttpServletRequest req) {
         TokenEntity te = new TokenEntity();
         te.setToken(WebHelper.getGuid());
-        te.setDuration(SettingData.TOKEN_EXPIRE);
-        te.setExpire(WebHelper.getTimestamp(SettingData.TOKEN_EXPIRE));
-        te.setType(0);
+        te.setDuration(min);
+        te.setExpire(WebHelper.getTimestamp(min));
+        te.setType(type);
         te.setIp(WebHelper.getIpAddress(req));
         te.setCreateUser(ue.getId());
         te.setUname(ue.getUname());
@@ -157,7 +164,7 @@
 
         // db
         TokenEntity te = selectOneByToken(token);
-        if (te != null) {
+        if (null != te) {
             redisService.put(tokenKey, te, te.getDuration(), TimeUnit.MINUTES);
             return true;
         }
@@ -186,7 +193,7 @@
         // db锛岃缃护鐗岃繃鏈�
         te.setUpdateUser(ue.getId());
         Integer rows = updateTokenExpire(te);
-        if (rows == 0) {
+        if (0 == rows) {
             return false;
         }
 
@@ -225,7 +232,7 @@
 
         // db
         TokenEntity te = selectOneByToken(token);
-        if (te != null) {
+        if (null != te) {
             redisService.put(tokenKey, te, te.getDuration(), TimeUnit.MINUTES);
         }
 
@@ -265,9 +272,8 @@
             return null;
         }
 
-        String userKey = RedisCacheKey.signUserKey(token);
-
         // redis
+        String userKey = RedisCacheKey.signUserKey(token);
         Object obj = redisService.get(userKey);
         if (obj instanceof UserEntity) {
             return (UserEntity) obj;
@@ -275,12 +281,9 @@
 
         // db
         UserEntity ue = usersService.selectByToken(token);
-        if (ue != null) {
-            TokenEntity te = getEntityByToken(token);
-            if (te != null) {
-                redisService.put(userKey, ue, te.getDuration(), TimeUnit.MINUTES);
-            }
-        }
+//        if (null != ue) {
+//            getEntityByToken(token);
+//        }
 
         return ue;
     }
@@ -315,6 +318,6 @@
         String key = RedisCacheKey.signPwdError(ue.getUid());
         Object objCount = redisService.get(key);
 
-        return objCount != null && (int) objCount >= SettingData.PWD_ERR_COUNT;
+        return null != objCount && (int) objCount >= SettingData.PWD_ERR_COUNT;
     }
 }

--
Gitblit v1.9.3