diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java index c74d779..2bafdc4 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java @@ -2,11 +2,13 @@ package com.chinaunicom.mall.ebtp.common.config; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.AuthAllows; import feign.RequestInterceptor; import feign.RequestTemplate; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; @@ -20,9 +22,11 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.regex.Pattern; import java.util.stream.Stream; import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.*; @@ -37,6 +41,8 @@ public class FeignConfig implements RequestInterceptor { /* 白名单(名单内请求不注入token) */ private @Setter List tokenWhiteList; + @Autowired + private AuthAllows allows; /** * @param template @@ -58,6 +64,10 @@ public class FeignConfig implements RequestInterceptor { template.header(CURRENT_ROLE_CODE, currentRoleCode); } + } else if (isExistsWhiteList(template.url(), template.method())) { + String access_token = getAccessToken(); + log.info("token=======access_token===" + access_token); + template.header(HttpHeaders.AUTHORIZATION, String.format("%s%s", TOKEN_PREFIX, access_token)); } } @@ -75,6 +85,10 @@ public class FeignConfig implements RequestInterceptor { return true; } + private boolean isExistsWhiteList(String url, String method) { + return Optional.ofNullable(allows.getApis()).orElseGet(ArrayList::new) + .parallelStream().anyMatch(reg -> Pattern.compile(reg).matcher(method + "." + url).matches()); + } /** * 请求中注入token *