Commit 7eba45c4 authored by 赵啸非's avatar 赵啸非

添加工作人员最后登录时间

parent cca74a5c
...@@ -67,8 +67,6 @@ public class AccessLogFilter implements GlobalFilter, Ordered { ...@@ -67,8 +67,6 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
private final List<HttpMessageReader<?>> messageReaders = HandlerStrategies.withDefaults().messageReaders(); private final List<HttpMessageReader<?>> messageReaders = HandlerStrategies.withDefaults().messageReaders();
/** /**
* 顺序必须是<-1,否则标准的NettyWriteResponseFilter将在您的过滤器得到一个被调用的机会之前发送响应 * 顺序必须是<-1,否则标准的NettyWriteResponseFilter将在您的过滤器得到一个被调用的机会之前发送响应
* 也就是说如果不小于 -1 ,将不会执行获取后端响应的逻辑 * 也就是说如果不小于 -1 ,将不会执行获取后端响应的逻辑
...@@ -108,9 +106,13 @@ public class AccessLogFilter implements GlobalFilter, Ordered { ...@@ -108,9 +106,13 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
accessLogPdu.setLogTime(new Date()); accessLogPdu.setLogTime(new Date());
accessLogPdu.setMethod(request.getMethodValue()); accessLogPdu.setMethod(request.getMethodValue());
log.info("origin uri:{} host:{} port:{}",requestPath,request.getHeaders().getHost().getHostName(),request.getHeaders().getHost().getPort()); log.info("origin uri:{} host:{} port:{},contentLens", requestPath, request.getHeaders().getHost().getHostName(), request.getHeaders().getHost().getPort(),request.getHeaders().getContentLength());
MediaType mediaType = request.getHeaders().getContentType(); MediaType mediaType = request.getHeaders().getContentType();
if (request.getHeaders().getContentLength() > 1024 * 64) {
return chain.filter(exchange);
}
if (MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType) || MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) { if (MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType) || MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
return writeBodyLog(exchange, chain, accessLogPdu); return writeBodyLog(exchange, chain, accessLogPdu);
} else { } else {
...@@ -155,7 +157,6 @@ public class AccessLogFilter implements GlobalFilter, Ordered { ...@@ -155,7 +157,6 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private Mono writeBodyLog(ServerWebExchange exchange, GatewayFilterChain chain, AccessLogPdu accessLogPdu) { private Mono writeBodyLog(ServerWebExchange exchange, GatewayFilterChain chain, AccessLogPdu accessLogPdu) {
ServerRequest serverRequest = ServerRequest.create(exchange, messageReaders); ServerRequest serverRequest = ServerRequest.create(exchange, messageReaders);
log.info("decoratedRequest 000");
Mono<String> modifiedBody = serverRequest.bodyToMono(String.class) Mono<String> modifiedBody = serverRequest.bodyToMono(String.class)
.flatMap(body -> { .flatMap(body -> {
log.info("decoratedRequest 0001111"); log.info("decoratedRequest 0001111");
...@@ -164,42 +165,25 @@ public class AccessLogFilter implements GlobalFilter, Ordered { ...@@ -164,42 +165,25 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
}); });
// 通过 BodyInserter 插入 body(支持修改body), 避免 request body 只能获取一次 // 通过 BodyInserter 插入 body(支持修改body), 避免 request body 只能获取一次
log.info("decoratedRequest 111");
BodyInserter bodyInserter = BodyInserters.fromPublisher(modifiedBody, String.class); BodyInserter bodyInserter = BodyInserters.fromPublisher(modifiedBody, String.class);
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.putAll(exchange.getRequest().getHeaders()); headers.putAll(exchange.getRequest().getHeaders());
headers.remove(HttpHeaders.CONTENT_LENGTH); headers.remove(HttpHeaders.CONTENT_LENGTH);
CachedBodyOutputMessage outputMessage = new CachedBodyOutputMessage(exchange, headers); CachedBodyOutputMessage outputMessage = new CachedBodyOutputMessage(exchange, headers);
log.info("decoratedRequest 0");
return bodyInserter.insert(outputMessage, new BodyInserterContext()) return bodyInserter.insert(outputMessage, new BodyInserterContext())
.then(Mono.defer(() -> { .then(Mono.defer(() -> {
Flux<DataBuffer> dataBuffers = Flux.from(outputMessage.getBody()); // 重新封装请求
return DataBufferUtils.join(dataBuffers) ServerHttpRequest decoratedRequest = requestDecorate(exchange, headers, outputMessage);
.doOnNext(buffer -> { // 记录响应日志
outputMessage.bufferFactory().wrap(buffer.asByteBuffer()); ServerHttpResponseDecorator decoratedResponse = recordResponseLog(exchange, accessLogPdu);
}) // 记录普通的
.doOnError(error -> { return chain.filter(exchange.mutate().request(decoratedRequest).response(decoratedResponse).build())
// DataBufferUtils.release(dataBuffers); .then(Mono.fromRunnable(() -> {
}) // 打印日志 并发送
.flatMap(buffer -> outputMessage.writeWith(Mono.just(buffer))); writeAccessLog(accessLogPdu);
}));
})); }));
// return bodyInserter.insert(outputMessage, new BodyInserterContext())
// .then(Mono.defer(() -> {
// // 重新封装请求
// Flux<DataBuffer> dataBuffers = Flux.from(outputMessage.getBody());
// log.info("decoratedRequest 1");
// ServerHttpRequest decoratedRequest = requestDecorate(exchange, headers, outputMessage);
// // 记录响应日志
// ServerHttpResponseDecorator decoratedResponse = recordResponseLog(exchange, accessLogPdu);
// // 记录普通的
// return chain.filter(exchange.mutate().request(decoratedRequest).response(decoratedResponse).build())
// .then(Mono.fromRunnable(() -> {
// // 打印日志 并发送
// writeAccessLog(accessLogPdu);
// }));
// }));
} }
private void writeAccessLog(AccessLogPdu accessLogPdu) { private void writeAccessLog(AccessLogPdu accessLogPdu) {
...@@ -228,7 +212,7 @@ public class AccessLogFilter implements GlobalFilter, Ordered { ...@@ -228,7 +212,7 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
@Override @Override
public HttpHeaders getHeaders() { public HttpHeaders getHeaders() {
long contentLength = headers.getContentLength(); long contentLength = headers.getContentLength();
log.info("decoratedRequest contentLength:"+contentLength); log.info("decoratedRequest contentLength:" + contentLength);
HttpHeaders httpHeaders = new HttpHeaders(); HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.putAll(super.getHeaders()); httpHeaders.putAll(super.getHeaders());
if (contentLength > 0) { if (contentLength > 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment