This commit is contained in:
Administrator
2024-05-14 15:37:46 +08:00
parent d61619d46e
commit a7eda73b0a
2 changed files with 39 additions and 36 deletions

View File

@@ -46,46 +46,49 @@ public class BodyDecryptGlobalFilter implements GlobalFilter, Ordered {
ServerHttpRequest request = exchange.getRequest();
return DataBufferUtils.join(request.getBody())
.flatMap(dataBuffer -> {
byte[] bytes = new byte[dataBuffer.readableByteCount()];
dataBuffer.read(bytes);
DataBufferUtils.release(dataBuffer);
if(request.getMethod().equals("POST")) {
return DataBufferUtils.join(request.getBody())
.flatMap(dataBuffer -> {
byte[] bytes = new byte[dataBuffer.readableByteCount()];
dataBuffer.read(bytes);
DataBufferUtils.release(dataBuffer);
String bodyString = new String(bytes);
String bodyString = new String(bytes);
// 这里可以对bodyString进行任何你需要的操作比如日志记录或修改内容
System.out.println("请求解密前: " + bodyString);
// 这里可以对bodyString进行任何你需要的操作比如日志记录或修改内容
System.out.println("请求解密前: " + bodyString);
String decrypt = AESUtil.decrypt(bodyString);
String decrypt = AESUtil.decrypt(bodyString);
// 重新创建一个新的请求对象
Flux<DataBuffer> bodyFlux = Flux.defer(() -> {
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(decrypt.getBytes());
System.out.println("请求解密后: " + bodyString);
return Mono.just(buffer);
// 重新创建一个新的请求对象
Flux<DataBuffer> bodyFlux = Flux.defer(() -> {
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(decrypt.getBytes());
System.out.println("请求解密后: " + decrypt);
return Mono.just(buffer);
});
ServerHttpRequest mutatedRequest = new ServerHttpRequestDecorator(request) {
@Override
public Flux<DataBuffer> getBody() {
return bodyFlux;
}
@NonNull
@Override
public HttpHeaders getHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.addAll(super.getHeaders());
headers.remove(HttpHeaders.CONTENT_LENGTH);
headers.setContentLength(bytes.length);
return headers;
}
};
return chain.filter(exchange.mutate().request(mutatedRequest).build());
});
ServerHttpRequest mutatedRequest = new ServerHttpRequestDecorator(request) {
@Override
public Flux<DataBuffer> getBody() {
return bodyFlux;
}
@NonNull
@Override
public HttpHeaders getHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.addAll(super.getHeaders());
headers.remove(HttpHeaders.CONTENT_LENGTH);
headers.setContentLength(bytes.length);
return headers;
}
};
return chain.filter(exchange.mutate().request(mutatedRequest).build());
});
}
return chain.filter(exchange);
}
}

View File

@@ -31,8 +31,8 @@ import java.nio.charset.StandardCharsets;
* @since 0.0.1
*/
//@Configuration
//@Component
@Configuration
@Component
public class ResponseEncryptionGlobalFilter implements GlobalFilter, Ordered {
private static final String AES_SECURTY = "MTIzNDU2Nzg5MTIzNDU2Nw==";//1234567891234567
private static final Logger log = LogManager.getLogger();