@ -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" } ;