繁体   English   中英

如何获取客户端的IP地址? (Spring WebFlux WebSocket)

[英]How do you get Client's IP address? (Spring WebFlux WebSocket)

正如标题所说,可以这么说,您如何获得连接的详细信息。 有没有办法通过 WebSocketSession 获得它? 我觉得我错过了一些东西......

我需要一种方法来禁止不良用户的 IP 地址,并且我想在地图上显示所有在线用户(就像地图上的一个点)。 稍后我不需要帮助来获取客户端的 IP 地址。

我正在使用 Spring 的 WebFlux WebSocket。

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

基于 Servlet 的WebSocketSession对象确实提供了该信息。 反应性风味似乎缺少这一点。

您应该创建一个Spring Framework 问题以将此作为增强请求

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

例如,您可以使用 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();
    }

我做到了

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

    return null;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM