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.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
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user