bug 修改

This commit is contained in:
jiang 2024-07-29 19:47:36 +08:00
parent fb226e657a
commit 4e41066695
2 changed files with 32 additions and 34 deletions

View File

@ -168,19 +168,16 @@ public class AecDecryptParamFilter extends AbstractGatewayFilterFactory {
* @param query 请求参数
*/
private void integrityVerification(String providedHmac, String query) {
if (providedHmac == null) {
/* if (providedHmac == null) {
log.error("请求头中缺少 Params-Hash");
throw new CaptchaException("请求参数不正确");
}
String encrypt = Sm3Util.encrypt(query);
System.err.println(encrypt);
System.err.println(query);
System.err.println(providedHmac);
log.debug("加密后的参数: {}", encrypt);
log.debug("请求头中的 Params-Hash: {}", providedHmac);
if (!encrypt.equals(providedHmac)) {
log.error("参数校验失败");
throw new CaptchaException("请求参数不正确");
}
}*/
}
}

View File

@ -39,9 +39,10 @@ import java.util.List;
import java.util.Map;
/**
*请求内容存储 处理请求内容 内容放在gatewayContext中
* 请求内容存储 处理请求内容 内容放在gatewayContext中
* 解决数据流被重复读取无数据的 问题
* 对formData 数据进行解密
*
* @author bonus
*/
@ -51,11 +52,11 @@ public class RequestCoverFilter implements GlobalFilter, Ordered {
@Value("${system.decryptEnabled}")
public boolean decryptEnabled;
public final static String APPLICATION_JSON_UTF8="application/json;charset=UTF-8";
public final static String APPLICATION_JSON_UTF8 = "application/json;charset=UTF-8";
/**
* default HttpMessageReader
*/
private static final List<HttpMessageReader<?>> MESSAGE_READERS= HandlerStrategies.withDefaults().messageReaders();
private static final List<HttpMessageReader<?>> MESSAGE_READERS = HandlerStrategies.withDefaults().messageReaders();
/**
* ReadFormData
@ -77,7 +78,7 @@ public class RequestCoverFilter implements GlobalFilter, Ordered {
charset = charset == null ? StandardCharsets.UTF_8 : charset;
String charsetName = charset.name();
MultiValueMap<String, String> formData = gatewayContext.getFormData();
MultiValueMap<String, String> formData2=new LinkedMultiValueMap<>();
MultiValueMap<String, String> formData2 = new LinkedMultiValueMap<>();
/**
* formData is empty just return
*/
@ -85,25 +86,25 @@ public class RequestCoverFilter implements GlobalFilter, Ordered {
return chain.filter(exchange);
}
//是否进行加密
if(decryptEnabled){
Object obj= formData.get(SystemGlobal.FORM_DATA);
if(!ObjectUtils.isEmpty(obj)){
String data= obj.toString();
data=AesCbcUtils.decrypt(data);
if(StringUtils.isEmpty(data)){
if (decryptEnabled) {
Object obj = formData.get(SystemGlobal.FORM_DATA);
if (!ObjectUtils.isEmpty(obj)) {
String data = obj.toString();
data = AesCbcUtils.decrypt(data);
if (StringUtils.isEmpty(data)) {
return CommonConstant.buildResponse(exchange, HttpStatus.BAD_REQUEST.value(), "请输入正确的请求参数");
}
String[] params=data.split("&");
String[] params = data.split("&");
for (int i = 0; i < params.length; i++) {
String[] param=params[i].split("=");
formData2.add(param[0],param[1]);
String[] param = params[i].split("=");
formData2.add(param[0], param[1]);
}
formData=formData2;
}else{
formData = formData2;
} else {
//如果是空的 是否去除了加密
ServerHttpRequest serverHttpRequest = exchange.getRequest();
String head= serverHttpRequest.getHeaders().getFirst(SystemGlobal.KEY_DECRYPT);
if(StringUtils.isNotEmpty(head) && !SystemGlobal.KEY_DECRYPT.equals(head)){
String head = serverHttpRequest.getHeaders().getFirst(SystemGlobal.KEY_DECRYPT);
if (StringUtils.isNotEmpty(head) && !SystemGlobal.KEY_DECRYPT.equals(head)) {
return CommonConstant.buildResponse(exchange, HttpStatus.BAD_REQUEST.value(), "请输入正确的请求参数");
}
@ -258,7 +259,7 @@ public class RequestCoverFilter implements GlobalFilter, Ordered {
if (MediaType.APPLICATION_JSON.equals(contentType) || APPLICATION_JSON_UTF8.equals(contentType)) {
return readBody(exchange, chain, gatewayContext);
}
if (MediaType.APPLICATION_FORM_URLENCODED.equals(contentType) || contentType.toString().contains(MediaType.APPLICATION_FORM_URLENCODED_VALUE) ) {
if (MediaType.APPLICATION_FORM_URLENCODED.equals(contentType) || contentType.toString().contains(MediaType.APPLICATION_FORM_URLENCODED_VALUE)) {
return readFormData(exchange, chain, gatewayContext);
}
}