diff --git a/jero-boot/jero-boot-base/jero-boot-base-api/jero-system-cloud-api/src/main/java/com/jero/config/FeignConfig.java b/jero-boot/jero-boot-base/jero-boot-base-api/jero-system-cloud-api/src/main/java/com/jero/config/FeignConfig.java index 1e6e6dbd..e38cc8b7 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-api/jero-system-cloud-api/src/main/java/com/jero/config/FeignConfig.java +++ b/jero-boot/jero-boot-base/jero-boot-base-api/jero-system-cloud-api/src/main/java/com/jero/config/FeignConfig.java @@ -1,20 +1,25 @@ package com.jero.config; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.SortedMap; - -import javax.servlet.http.HttpServletRequest; - +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.support.config.FastJsonConfig; +import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; +import com.alibaba.fastjson.support.springfox.SwaggerJsonSerializer; +import com.jero.common.config.mqtoken.UserTokenContext; import com.jero.common.constant.CommonConstant; import com.jero.common.util.DateUtils; 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.util.HttpUtils; 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.boot.autoconfigure.AutoConfigureBefore; 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.ServletRequestAttributes; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.alibaba.fastjson.support.config.FastJsonConfig; -import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; -import com.alibaba.fastjson.support.springfox.SwaggerJsonSerializer; - -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; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.SortedMap; @ConditionalOnClass(Feign.class) @@ -56,40 +54,7 @@ public class FeignConfig { return requestTemplate -> { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (null != 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!=null && queryLine.startsWith("?")){ - queryLine = queryLine.substring(1); - } - log.info(queryLine); - if(requestTemplate.body()!=null){ - log.info(new String(requestTemplate.body())); - } - SortedMap 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(); - } - } + filterRequest(requestTemplate, attributes); }else{ String token = UserTokenContext.getToken(); 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 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(); + } + } + } /**