zhoux 1 éve
szülő
commit
fb4410d53d

+ 34 - 0
src/main/java/com/dk/gateway/enums/ConstantEnum.java

@@ -0,0 +1,34 @@
+package com.dk.gateway.enums;
+
+/**
+ * @author 周兴
+ * 错误信息
+ * @date_time 2021-12-22 17:15
+ */
+public enum ConstantEnum {
+    /**
+     * @author : 周兴
+     * @desc : 体验公司编码
+     * @date : 2024/4/30 13:20
+     */
+    STD_TEST("std_test"),
+    PRO_TEST("pro_test"),
+    ;
+
+    private String name;
+
+    // get set 方法
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    // 构造方法
+    ConstantEnum(String name) {
+        this.name = name;
+    }
+}
+

+ 8 - 0
src/main/java/com/dk/gateway/oauth/filter/Oauth2Filter.java

@@ -2,6 +2,7 @@ package com.dk.gateway.oauth.filter;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.dk.gateway.enums.ConstantEnum;
 import com.dk.gateway.enums.ErrorCodeEnum;
 import com.dk.gateway.oauth.util.AESSecurityUtil;
 import com.dk.gateway.oauth.util.JwtUtil;
@@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Constants;
 import org.springframework.core.Ordered;
 import org.springframework.core.io.buffer.DataBuffer;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -97,6 +99,12 @@ public class Oauth2Filter implements GlobalFilter, Ordered {
             try {
                 String decrypt = AESSecurityUtil.decrypt(AESKey, tokens[1]);
                 String userId = JwtUtil.getUserId(decrypt);
+                String userWxId = JwtUtil.getUserWxId(decrypt);
+                // 体验公司不进行验证
+                if(ConstantEnum.PRO_TEST.getName().equals(userWxId) ||
+                        ConstantEnum.STD_TEST.getName().equals(userWxId)){
+                    return chain.filter(exchange);
+                }
                 String appCode = JwtUtil.getAppCode(decrypt);
                 String mapJson = stringRedisTemplate.opsForValue().get("REDIS_USER_LOGIN_" + userId + "_" + appCode);
                 Map<String, Object> userMap = JSON.parseObject(mapJson);

+ 11 - 0
src/main/java/com/dk/gateway/oauth/util/JwtUtil.java

@@ -13,6 +13,7 @@ public class JwtUtil {
     public static final String SHIRO_CP_CODE = "cpCode";
     public static final String SHIRO_USER_NAME = "username";
     public static final String SHIRO_USER_ID = "userId";
+    public static final String SHIRO_USER_WX_ID = "userWxId";
     public static final String SHIRO_APP_CODE = "appCode";
     public static final String SHIRO_CLIENT_ID = "clientId";
     public static final String SHIRO_USER_SALT = "salt";
@@ -75,6 +76,16 @@ public class JwtUtil {
         }
     }
 
+    public static String getUserWxId(String token) {
+        try {
+            DecodedJWT jwt = JWT.decode(token);
+            return jwt.getClaim(SHIRO_USER_WX_ID).asString();
+        } catch (JWTDecodeException e) {
+            log.error("error:{}", e.getMessage());
+            return null;
+        }
+    }
+
     public static String getCpId(String token) {
         try {
             DecodedJWT jwt = JWT.decode(token);