From b0a68908bdf66bdcaac3c1395e354977ca8849aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Thu, 27 Feb 2025 20:08:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=A1=E9=AA=8Ctoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/TokenValidateInterceptor.java | 33 +++++++++++++++++++ .../service/validate/ApiValidator.java | 14 ++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 sop-gateway/src/main/java/com/gitee/sop/gateway/interceptor/internal/TokenValidateInterceptor.java diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/interceptor/internal/TokenValidateInterceptor.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/interceptor/internal/TokenValidateInterceptor.java new file mode 100644 index 00000000..837505b1 --- /dev/null +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/interceptor/internal/TokenValidateInterceptor.java @@ -0,0 +1,33 @@ +package com.gitee.sop.gateway.interceptor.internal; + +import com.gitee.sop.gateway.common.ApiInfoDTO; +import com.gitee.sop.gateway.common.enums.YesOrNoEnum; +import com.gitee.sop.gateway.interceptor.RouteInterceptor; +import com.gitee.sop.gateway.request.ApiRequestContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * 校验token + * + * @author 六如 + */ +@Component +@Slf4j +public class TokenValidateInterceptor implements RouteInterceptor { + @Override + public void preRoute(ApiRequestContext context, ApiInfoDTO apiInfoDTO) { + Integer isNeedToken = apiInfoDTO.getIsNeedToken(); + if (YesOrNoEnum.of(isNeedToken) == YesOrNoEnum.NO) { + return; + } + // 这里做校验token操作,如从redis查询token是否存在 + // 走到这里token肯定有值 + String appAuthToken = context.getApiRequest().getAppAuthToken(); + log.info("访问token={}", appAuthToken); + + + // token不对抛出下面这个异常即可 +// throw new ApiException(ErrorEnum.AOP_INVALID_AUTH_TOKEN, context.getLocale()); + } +} diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/validate/ApiValidator.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/validate/ApiValidator.java index 17c43de7..08f88fd8 100755 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/service/validate/ApiValidator.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/service/validate/ApiValidator.java @@ -2,6 +2,7 @@ package com.gitee.sop.gateway.service.validate; import com.gitee.sop.gateway.common.ApiInfoDTO; import com.gitee.sop.gateway.common.enums.StatusEnum; +import com.gitee.sop.gateway.common.enums.YesOrNoEnum; import com.gitee.sop.gateway.config.ApiConfig; import com.gitee.sop.gateway.exception.ApiException; import com.gitee.sop.gateway.message.ErrorEnum; @@ -18,6 +19,7 @@ import com.gitee.sop.gateway.service.manager.dto.IsvDTO; import com.gitee.sop.support.enums.ApiModeEnum; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -308,8 +310,16 @@ public class ApiValidator implements Validator { * * @param apiRequestContext 参数 */ - protected void checkToken(ApiRequestContext apiRequestContext) { - // todo:校验token + protected void checkToken(ApiRequestContext apiRequestContext, ApiInfoDTO apiInfoDTO) { + Integer isNeedToken = apiInfoDTO.getIsNeedToken(); + if (YesOrNoEnum.of(isNeedToken) == YesOrNoEnum.NO) { + return; + } + // 这里做校验token操作 + String appAuthToken = apiRequestContext.getApiRequest().getAppAuthToken(); + if (StringUtils.isBlank(appAuthToken)) { + throw new ApiException(ErrorEnum.AOP_INVALID_AUTH_TOKEN, apiRequestContext.getLocale()); + } } @PostConstruct