cachedRequestBodyObject не работает в фабрике настраиваемых фильтров облачного шлюза Spring

Я использую весенний облачный шлюз для своего проекта. Я написал одну настраиваемую фабрику фильтров для генерации подписи HMAC, которая требует полезной нагрузки запроса. Я включил для readBody (String.class, requestBody - ›true) значение true в определении маршрута и из атрибута cachedRequestBody, я смог получить полезные данные запроса в моем настраиваемом фильтре. со следующей весенней загрузкой версии 2.1.3.RELEASE и весенней облачной версии 2.1.1.RELEASE.

Теперь после обновления версии Spring boot до 2.3.3.RELEASE и Spring Cloud версии 2.2.4.RELEASE тот же код не работает.

предикат readbody не работает с последней весенней облачной версией? любое предложение будет полезным.

Образец фабрики нестандартных фильтров:

@Override
public GatewayFilter apply(Config config) {
  
    return (exchange, chain) -> {
        HttpMethod method = exchange.getRequest().getMethod();
        String httpVerb = method.name();
        ServerHttpRequest httpRequest = exchange.getRequest();
        String requestPayload = exchange.getAttribute("cachedRequestBodyObject");
       signature = generateSignature(....);
       ServerHttpRequest.Builder builder = httpRequest.mutate().header(HttpHeaders.AUTHORIZATION, signature)
       ServerHttpRequest downStreamRequest= (config.getPath()!=null?builder.path(config.path):builder).build();
        return chain.filter(exchange.mutate().request(downStreamRequest).build());
    };
}

person Sarminb    schedule 30.10.2020    source источник


Ответы (1)


Я пробовал с весенним облаком 2020.0.0 и весенней загрузкой 2.4.1, я могу получить полезную нагрузку запроса в моем настраиваемом фильтре

person meghana manjunath    schedule 13.01.2021