如何在webflux中获得客户端IP?

时间:2018-06-22 05:21:58

标签: spring-webflux

我曾经调用HttpServletRequest.getRemoteAddr()来获取客户端ip。

我想知道如何通过ServerWebExchange获取它。

我最好的猜测是:

  serverWebExchange.getRequest().getRemoteAddress().getAddress().getHostAddress();

对吗?

谢谢

利昂

3 个答案:

答案 0 :(得分:1)

是的,这是实现该目标的正确方法。 请注意,如果您想支持Forwarded或X-Forwarded- * HTTP请求标头,则需要在服务器配置级别进行配置。

答案 1 :(得分:1)

您可以使用def compute_loss(Z5, Z6, C, YC, YI, YL): cost1 = tf.nn.softmax_cross_entropy_with_logits(logits=Z5, labels=YI) cost2 = tf.nn.softmax_cross_entropy_with_logits(logits=Z6, labels=YL) cost3 = tf.nn.softmax_cross_entropy_with_logits(logits=C, labels=YC) cost = tf.reduce_mean(tf.add(cost1, tf.add(cost2, cost3))) return cost

org.springframework.http.server.reactive.ServerHttpRequest

在文档中感到难过:String remoteAddress = serverHttpRequest.getRemoteAddress().getAddress().getHostAddress(); 代表响应式服务器端HTTP请求。

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/server/reactive/ServerHttpRequest.html

答案 2 :(得分:0)

您还可以将org.springframework.http.server.ServerHttpRequest作为参数添加到带有注释的@RerquestMapping方法中,并从中获取IP地址:

@GetMapping("/myPath")
public void someMethod(ServerHttpRequest request) {
    System.out.println(request.getRemoteAddress().getAddress().getHostAddress();)
}