【fix sonar】FeignConfig文件
This commit is contained in:
+57
-56
@@ -1,20 +1,25 @@
|
|||||||
package com.jero.config;
|
package com.jero.config;
|
||||||
|
|
||||||
import java.io.IOException;
|
import com.alibaba.fastjson.JSON;
|
||||||
import java.util.ArrayList;
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||||
import java.util.Arrays;
|
import com.alibaba.fastjson.support.config.FastJsonConfig;
|
||||||
import java.util.List;
|
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
|
||||||
import java.util.SortedMap;
|
import com.alibaba.fastjson.support.springfox.SwaggerJsonSerializer;
|
||||||
|
import com.jero.common.config.mqtoken.UserTokenContext;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
import com.jero.common.constant.CommonConstant;
|
import com.jero.common.constant.CommonConstant;
|
||||||
import com.jero.common.util.DateUtils;
|
import com.jero.common.util.DateUtils;
|
||||||
import com.jero.common.util.PathMatcherUtil;
|
import com.jero.common.util.PathMatcherUtil;
|
||||||
import com.jero.common.config.mqtoken.UserTokenContext;
|
|
||||||
import com.jero.config.sign.interceptor.SignAuthConfiguration;
|
import com.jero.config.sign.interceptor.SignAuthConfiguration;
|
||||||
import com.jero.config.sign.util.HttpUtils;
|
import com.jero.config.sign.util.HttpUtils;
|
||||||
import com.jero.config.sign.util.SignUtil;
|
import com.jero.config.sign.util.SignUtil;
|
||||||
|
import feign.Feign;
|
||||||
|
import feign.Logger;
|
||||||
|
import feign.RequestInterceptor;
|
||||||
|
import feign.RequestTemplate;
|
||||||
|
import feign.codec.Decoder;
|
||||||
|
import feign.codec.Encoder;
|
||||||
|
import feign.form.spring.SpringFormEncoder;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.ObjectFactory;
|
import org.springframework.beans.factory.ObjectFactory;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
@@ -30,19 +35,12 @@ import org.springframework.http.MediaType;
|
|||||||
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.RequestContextHolder;
|
||||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
import java.io.IOException;
|
||||||
import com.alibaba.fastjson.support.config.FastJsonConfig;
|
import java.util.ArrayList;
|
||||||
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
|
import java.util.Arrays;
|
||||||
import com.alibaba.fastjson.support.springfox.SwaggerJsonSerializer;
|
import java.util.List;
|
||||||
|
import java.util.SortedMap;
|
||||||
import feign.Feign;
|
|
||||||
import feign.Logger;
|
|
||||||
import feign.RequestInterceptor;
|
|
||||||
import feign.codec.Decoder;
|
|
||||||
import feign.codec.Encoder;
|
|
||||||
import feign.form.spring.SpringFormEncoder;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
|
|
||||||
@ConditionalOnClass(Feign.class)
|
@ConditionalOnClass(Feign.class)
|
||||||
@@ -56,40 +54,7 @@ public class FeignConfig {
|
|||||||
return requestTemplate -> {
|
return requestTemplate -> {
|
||||||
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||||
if (null != attributes) {
|
if (null != attributes) {
|
||||||
HttpServletRequest request = attributes.getRequest();
|
filterRequest(requestTemplate, attributes);
|
||||||
log.debug("Feign request: {}", request.getRequestURI());
|
|
||||||
// 将token信息放入header中
|
|
||||||
String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
|
|
||||||
if(token==null || "".equals(token)){
|
|
||||||
token = request.getParameter("token");
|
|
||||||
}
|
|
||||||
log.debug("Feign request token: {}", token);
|
|
||||||
requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
|
|
||||||
|
|
||||||
//根据URL地址过滤请求 【字典表参数签名验证】
|
|
||||||
if (PathMatcherUtil.matches(Arrays.asList(SignAuthConfiguration.urlList),requestTemplate.path())) {
|
|
||||||
try {
|
|
||||||
log.info("============================ [begin] fegin api url ============================");
|
|
||||||
log.info(requestTemplate.path());
|
|
||||||
log.info(requestTemplate.method());
|
|
||||||
String queryLine = requestTemplate.queryLine();
|
|
||||||
if(queryLine!=null && queryLine.startsWith("?")){
|
|
||||||
queryLine = queryLine.substring(1);
|
|
||||||
}
|
|
||||||
log.info(queryLine);
|
|
||||||
if(requestTemplate.body()!=null){
|
|
||||||
log.info(new String(requestTemplate.body()));
|
|
||||||
}
|
|
||||||
SortedMap<String, String> allParams = HttpUtils.getAllParams(requestTemplate.path(),queryLine,requestTemplate.body(),requestTemplate.method());
|
|
||||||
String sign = SignUtil.getParamsSign(allParams);
|
|
||||||
log.info(" Feign request params sign: {}",sign);
|
|
||||||
log.info("============================ [end] fegin api url ============================");
|
|
||||||
requestTemplate.header(CommonConstant.X_SIGN, sign);
|
|
||||||
requestTemplate.header(CommonConstant.X_TIMESTAMP, DateUtils.getCurrentTimestamp().toString());
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
String token = UserTokenContext.getToken();
|
String token = UserTokenContext.getToken();
|
||||||
log.debug("Feign request token: {}", token);
|
log.debug("Feign request token: {}", token);
|
||||||
@@ -98,6 +63,42 @@ public class FeignConfig {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void filterRequest(RequestTemplate requestTemplate, ServletRequestAttributes attributes) {
|
||||||
|
HttpServletRequest request = attributes.getRequest();
|
||||||
|
log.debug("Feign request: {}", request.getRequestURI());
|
||||||
|
// 将token信息放入header中
|
||||||
|
String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
|
||||||
|
if(token==null || "".equals(token)){
|
||||||
|
token = request.getParameter("token");
|
||||||
|
}
|
||||||
|
log.debug("Feign request token: {}", token);
|
||||||
|
requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
|
||||||
|
|
||||||
|
//根据URL地址过滤请求 【字典表参数签名验证】
|
||||||
|
if (PathMatcherUtil.matches(Arrays.asList(SignAuthConfiguration.urlList),requestTemplate.path())) {
|
||||||
|
try {
|
||||||
|
log.info("============================ [begin] fegin api url ============================");
|
||||||
|
log.info(requestTemplate.path());
|
||||||
|
log.info(requestTemplate.method());
|
||||||
|
String queryLine = requestTemplate.queryLine();
|
||||||
|
if(queryLine.startsWith("?")){
|
||||||
|
queryLine = queryLine.substring(1);
|
||||||
|
}
|
||||||
|
log.info(queryLine);
|
||||||
|
if(requestTemplate.body()!=null){
|
||||||
|
log.info(new String(requestTemplate.body()));
|
||||||
|
}
|
||||||
|
SortedMap<String, String> allParams = HttpUtils.getAllParams(requestTemplate.path(),queryLine,requestTemplate.body(),requestTemplate.method());
|
||||||
|
String sign = SignUtil.getParamsSign(allParams);
|
||||||
|
log.info(" Feign request params sign: {}",sign);
|
||||||
|
log.info("============================ [end] fegin api url ============================");
|
||||||
|
requestTemplate.header(CommonConstant.X_SIGN, sign);
|
||||||
|
requestTemplate.header(CommonConstant.X_TIMESTAMP, DateUtils.getCurrentTimestamp().toString());
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user