FeignConfig增加白名单
This commit is contained in:
@ -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<String> 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
|
||||
*
|
||||
|
Reference in New Issue
Block a user