FeignConfig增加白名单

This commit is contained in:
liuh
2022-03-01 16:36:51 +08:00
parent d8c799987f
commit fe8c89e961

View File

@ -2,11 +2,13 @@ package com.chinaunicom.mall.ebtp.common.config;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.AuthAllows;
import feign.RequestInterceptor; import feign.RequestInterceptor;
import feign.RequestTemplate; import feign.RequestTemplate;
import lombok.Setter; import lombok.Setter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
@ -20,9 +22,11 @@ import java.io.InputStreamReader;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.regex.Pattern;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.*; import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.*;
@ -37,6 +41,8 @@ public class FeignConfig implements RequestInterceptor {
/* 白名单名单内请求不注入token */ /* 白名单名单内请求不注入token */
private @Setter private @Setter
List<String> tokenWhiteList; List<String> tokenWhiteList;
@Autowired
private AuthAllows allows;
/** /**
* @param template * @param template
@ -58,6 +64,10 @@ public class FeignConfig implements RequestInterceptor {
template.header(CURRENT_ROLE_CODE, currentRoleCode); 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; 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 * 请求中注入token
* *