zhaohai666 commented on code in PR #36:
URL:
https://github.com/apache/rocketmq-eventbridge/pull/36#discussion_r997649065
##########
start/src/main/java/org/apache/rocketmq/eventbridge/filter/LoginFilter.java:
##########
@@ -16,48 +16,75 @@
*/
package org.apache.rocketmq.eventbridge.filter;
- import java.util.List;
-
- import lombok.extern.slf4j.Slf4j;
+ import com.google.gson.Gson;
import org.apache.rocketmq.eventbridge.exception.EventBridgeException;
import org.apache.rocketmq.eventbridge.exception.code.DefaultErrorCode;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
- import org.springframework.http.server.reactive.ServerHttpRequest;
+ import org.springframework.core.io.buffer.DataBuffer;
+ import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
+ import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
+ import java.io.ByteArrayOutputStream;
+ import java.io.IOException;
+ import java.nio.channels.Channels;
+ import java.nio.charset.StandardCharsets;
+ import java.util.List;
+
@Component
@Order(value = 2)
- @Slf4j
public class LoginFilter implements WebFilter {
+ private static final Logger log = LoggerFactory.getLogger("accessLog");
+
public static final String HEADER_KEY_LOGIN_ACCOUNT_ID = "loginAccountId";
public static final String HEADER_KEY_PARENT_ACCOUNT_ID =
"parentAccountId";
public static final String HEADER_KEY_RESOURCE_OWNER_ACCOUNT_ID =
"resourceOwnerAccountId";
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain
chain) {
- ServerHttpRequest request = exchange.getRequest();
- return chain.filter(exchange)
- .subscriberContext(ctx -> {
- List<String> parentAccountIds = request.getHeaders()
+ ServerHttpRequestDecorator accessPermissionDecorator = new
ServerHttpRequestDecorator(exchange.getRequest()) {
+ @Override
+ public Flux<DataBuffer> getBody() {
+ return super.getBody().doOnNext(dataBuffer -> {
+ try {
+ ByteArrayOutputStream byteArrayOutputStream = new
ByteArrayOutputStream();
+
Channels.newChannel(byteArrayOutputStream).write(dataBuffer.asByteBuffer().asReadOnlyBuffer());
+ String requestBody = new
String(byteArrayOutputStream.toByteArray(), StandardCharsets.UTF_8);
+ log.info("url : {} | requestParam : {} |
requestMethod : {} | requestBody : {}",
+ exchange.getRequest().getURI(),
+ exchange.getRequest().getQueryParams(),
+ exchange.getRequest().getMethodValue(),
Review Comment:
The log and log filters are separated, and a new log filter has been added.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]