您如何获得客户的IP地址? (Spring WebFlux WebSocket)

时间:2018-07-05 13:29:54

标签: java spring-boot spring-webflux

正如标题所述,可以这么说,您如何获得连接的详细信息。有没有办法通过WebSocketSession获得它?我觉得我在想什么...

我需要一种方法来禁止不良用户的ip地址,而且我想在地图上显示所有在线用户(例如地图上的点)。以后我不需要帮助,而在获得客户的IP地址时也需要帮助。

我正在使用Spring的WebFlux WebSocket。

编辑:我创建了一个功能请求:https://jira.spring.io/browse/SWF-1728

4 个答案:

答案 0 :(得分:1)

基于Servlet的WebSocketSession对象确实提供了该信息。反应性风味似乎没有这种作用。

您应该创建一个Spring Framework issue to request this as an enhancement

答案 1 :(得分:0)

WebSocketSession有一个名为getRemoteAddress()的方法,您可以使用其任何实现来获取远程地址。

答案 2 :(得分:0)

例如,您可以使用HttpServletRequest查找ip地址

 String remoteHost = request.getRemoteHost();
    String remoteAddr = request.getRemoteAddr();
    if (remoteAddr.equals("0:0:0:0:0:0:0:1")) {
        InetAddress localip = java.net.InetAddress.getLocalHost();
        remoteAddr = localip.getHostAddress();
        remoteHost = localip.getHostName();
    }

答案 3 :(得分:0)

我做到了

public Mono<ServerResponse> hello(ServerRequest request) {
    String remoteAddr = request.remoteAddress().get().getAddress().getHostAddress());

    return null;
}