dengsixing 3 年 前
コミット
a54c0a978b

+ 15 - 11
src/main/java/com/fdkankan/gateway/filter/OfficialTokenFilter.java

@@ -3,11 +3,13 @@ package com.fdkankan.gateway.filter;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.LoginType;
 import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.gateway.config.PermissionConfig;
+import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import io.jsonwebtoken.Claims;
 import lombok.extern.slf4j.Slf4j;
@@ -64,13 +66,13 @@ public class OfficialTokenFilter implements GatewayFilter, Ordered {
             log.info("当前路径为" + path + ",是忽略过滤路径,直接放行!");
             return chain.filter(exchange);
         } else {
-            ServerCode serverCode = null;
+            ErrorCode errorCode = null;
             log.info("当前路径为" + path + ",不是忽略过滤路径,开始校验!");
             // 获取当前请求中的token
             String token = request.getHeaders().getFirst(TOKEN);
             if(StrUtil.isBlank(token)){
-                serverCode = ServerCode.TOKEN_NOT_FOUND;
-                DataBuffer buffer = setResponseInfo(response, ResultData.error(serverCode.code(), serverCode.message()));
+                errorCode = ErrorCode.TOKEN_NOT_FOUND;
+                DataBuffer buffer = setResponseInfo(response, ResultData.error(errorCode));
                 return response.writeWith(Mono.just(buffer));
             }else{
                 //验证token是否被篡改
@@ -78,23 +80,25 @@ public class OfficialTokenFilter implements GatewayFilter, Ordered {
                 try {
                     claims = JwtUtil.parseJWT(token);
                 }catch (Exception e){
-                    serverCode = ServerCode.TOKEN_ILLEGAL;
-                    DataBuffer buffer = setResponseInfo(response, ResultData.error(serverCode.code(), serverCode.message()));
+                    errorCode = ErrorCode.TOKEN_ILLEGAL;
+                    DataBuffer buffer = setResponseInfo(response, ResultData.error(errorCode));
                     return response.writeWith(Mono.just(buffer));
                 }
 
                 String userName = (String)claims.get("userName");
-                String loginType = (String)claims.get("loginType");
+//                String loginType = (String)claims.get("loginType");
+                String loginType = LoginType.USER.code();
 
                 //查询redis,token是否存在
-//                String key = String.format(RedisKey.TOKEN_USER_TYPE, userName, loginType);
-//                boolean exist = redisTemplate.hasKey(key);
-//                if(!exist){
-//                    DataBuffer buffer = setResponseInfo(response, ResultData.error(ServerCode.TOKEN_NOT_FOUND.code(), ServerCode.TOKEN_NOT_FOUND.message()));
+                String key = String.format(RedisKey.TOKEN_V3, token);
+                boolean exist = redisUtil.hasKey(key);
+                if(!exist){
+                    DataBuffer buffer = setResponseInfo(response, ResultData.error(ErrorCode.TOKEN_NOT_FOUND));
 //                    return response.writeWith(Mono.just(buffer));
-//                }
+                }
 
                 if(this.checkPermission(path, loginType)){
+                    redisUtil.expire(key, RedisKey.USER_EXPIRE_TIME);
                     return chain.filter(exchange);
                 }
             }