|
@@ -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);
|
|
|
}
|
|
|
}
|