|
|
@ -68,18 +68,25 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpA |
|
|
|
return chain.filter(exchange); |
|
|
|
} |
|
|
|
|
|
|
|
//1.添加流水号
|
|
|
|
ServerHttpRequest request = exchange.getRequest(); |
|
|
|
List<String> tranSerials = request.getHeaders().get(AppClientConstant.TRANSACTION_SERIAL_KEY); |
|
|
|
if (CollectionUtils.isEmpty(tranSerials) || StringUtils.isBlank(tranSerials.get(0))) { |
|
|
|
request.mutate().header(AppClientConstant.TRANSACTION_SERIAL_KEY, new String[]{getTransactionSerial()}); |
|
|
|
|
|
|
|
//0.添加流水号
|
|
|
|
String tranSerial = getTranserialFromRequestHeader(request); |
|
|
|
if (StringUtils.isBlank(tranSerial)) { |
|
|
|
tranSerial = generateTransactionSerial(); |
|
|
|
// 设置当前线程名
|
|
|
|
request.mutate().header(AppClientConstant.TRANSACTION_SERIAL_KEY, new String[]{tranSerial}); |
|
|
|
} |
|
|
|
Thread.currentThread().setName(tranSerial); |
|
|
|
|
|
|
|
//1.打印请求信息
|
|
|
|
logRequest(request); |
|
|
|
|
|
|
|
//2.获取请求路径,参数
|
|
|
|
String requestUri = request.getPath().pathWithinApplication().value(); |
|
|
|
MultiValueMap<String, String> queryParams = request.getQueryParams(); |
|
|
|
String queryParamsStr = convertQueryParams2String(queryParams); |
|
|
|
logger.info("CpAuthGatewayFilterFactory当前requestUri=[" + requestUri.concat(queryParamsStr) + "],CpAuthGatewayFilterFactory拦截成功,客户端Id:{}", IpUtils.getClientIp(request)); |
|
|
|
logger.info("当前requestUri=[" + requestUri.concat(queryParamsStr) + "],客户端Id:{}", IpUtils.getClientIp(request)); |
|
|
|
|
|
|
|
//3.认证
|
|
|
|
String authType = getAuthType(request); |
|
|
@ -109,6 +116,36 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpA |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 打印请求头 |
|
|
|
* @param request 请求 |
|
|
|
* @return void |
|
|
|
* @author wxz |
|
|
|
* @date 2021.08.18 11:18:00 |
|
|
|
*/ |
|
|
|
private void logRequest(ServerHttpRequest request) { |
|
|
|
HttpHeaders headers = request.getHeaders(); |
|
|
|
StringBuilder sb = new StringBuilder("请求头:"); |
|
|
|
for (Map.Entry<String, List<String>> entry : headers.entrySet()) { |
|
|
|
String headerKey = entry.getKey(); |
|
|
|
List<String> headerValue = entry.getValue(); |
|
|
|
sb.append(headerKey).append(":").append(headerValue).append(","); |
|
|
|
} |
|
|
|
logger.info(sb.toString()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 从request请求头中获取传递过来的流水号 |
|
|
|
* @param request |
|
|
|
* @return java.lang.String |
|
|
|
* @author wxz |
|
|
|
* @date 2021.08.18 15:55:30 |
|
|
|
*/ |
|
|
|
private String getTranserialFromRequestHeader(ServerHttpRequest request) { |
|
|
|
List<String> tranSerials = request.getHeaders().get(AppClientConstant.TRANSACTION_SERIAL_KEY); |
|
|
|
return CollectionUtils.isEmpty(tranSerials) ? null : tranSerials.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @return |
|
|
|
* @Description 将url参数转化为String |
|
|
@ -181,23 +218,12 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpA |
|
|
|
return AuthTypeConstant.AUTH_TYPE_INTERNAL; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取请求头 |
|
|
|
* |
|
|
|
* @param request |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String getHeader(ServerHttpRequest request, String headerName) { |
|
|
|
HttpHeaders headers = request.getHeaders(); |
|
|
|
return headers.getFirst(headerName); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取事务流水号 |
|
|
|
* |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public static String getTransactionSerial() { |
|
|
|
public static String generateTransactionSerial() { |
|
|
|
String[] letterPool = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n" |
|
|
|
, "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; |
|
|
|
|
|
|
|