优化日志

This commit is contained in:
zhou-hao
2019-11-30 18:24:43 +08:00
parent 88f203fc18
commit 2e39ea195e
15 changed files with 501 additions and 193 deletions

View File

@@ -114,6 +114,13 @@ public class DimensionDataAccessHandler implements DataAccessHandler {
DataAccessHandlerContext context,
MappingInfo mappingInfo,
Object id) {
if (id instanceof Param || id instanceof Entity) {
applyQueryParam(config, context, id);
return id;
}
List<Dimension> dimensions = context.getDimensions();
Set<Object> scope = CollectionUtils.isNotEmpty(config.getScope()) ?
@@ -138,11 +145,25 @@ public class DimensionDataAccessHandler implements DataAccessHandler {
if (id instanceof Publisher) {
if (id instanceof Mono) {
return ((Mono) id)
.flatMap(r -> reactiveCheck.apply(r instanceof Collection ? ((Collection) r) : Collections.singleton(r)))
.flatMap(r -> {
if (r instanceof Param) {
applyQueryParam(config, context, r);
return Mono.just(r);
}
return reactiveCheck.apply(r instanceof Collection ? ((Collection) r) : Collections.singleton(r));
})
.then((Mono) id);
}
if (id instanceof Flux) {
return ((Flux) id)
.filter(v -> {
if (v instanceof Param) {
applyQueryParam(config, context, v);
return false;
}
return true;
})
.collectList()
.flatMap(reactiveCheck)
.thenMany((Flux) id);
@@ -272,7 +293,7 @@ public class DimensionDataAccessHandler implements DataAccessHandler {
MappingInfo mappingInfo = getMappingInfo(context).get(cfg.getScopeType());
//根据结果控制
if (context.getDefinition().getPhased() == Phased.after) {
if (context.getDefinition().getResources().getPhased() == Phased.after) {
Object result = context.getParamContext().getInvokeResult();
Set<Object> scope = CollectionUtils.isNotEmpty(cfg.getScope()) ?
cfg.getScope() :
@@ -283,12 +304,14 @@ public class DimensionDataAccessHandler implements DataAccessHandler {
String property = mappingInfo.getProperty();
if (result instanceof Mono) {
context.getParamContext().setInvokeResult(((Mono) result).
filter(data -> hasAccessByProperty(scope, property, data)));
context.getParamContext()
.setInvokeResult(((Mono) result).
filter(data -> hasAccessByProperty(scope, property, data)));
return true;
} else if (result instanceof Flux) {
context.getParamContext().setInvokeResult(((Flux) result).
filter(data -> hasAccessByProperty(scope, property, data)));
context.getParamContext()
.setInvokeResult(((Flux) result).
filter(data -> hasAccessByProperty(scope, property, data)));
return true;
}
return hasAccessByProperty(scope, property, result);

View File

@@ -5,6 +5,7 @@ import org.hswebframework.web.authorization.events.AuthorizationSuccessEvent;
import org.hswebframework.web.authorization.token.ParsedToken;
import org.hswebframework.web.authorization.token.UserTokenManager;
import org.hswebframework.web.context.ContextUtils;
import org.hswebframework.web.logger.ReactiveLogger;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
@@ -42,7 +43,9 @@ public class UserTokenWebFilter implements WebFilter, BeanPostProcessor {
.subscriberContext(ContextUtils.acceptContext(ctx ->
Flux.fromIterable(parsers)
.flatMap(parser -> parser.parseToken(exchange))
.subscribe(token -> ctx.put(ParsedToken.class, token))));
.subscribe(token -> ctx.put(ParsedToken.class, token))))
.subscriberContext(ReactiveLogger.start("requestId", exchange.getRequest().getId()))
;
}
@EventListener