Как вы получаете IP-адрес клиента? (Spring WebFlux WebSocket)

Как говорится в названии, как вы получаете, так сказать, подробности о соединении. Есть ли способ получить его через WebSocketSession? Я чувствую, что что-то упустил...

Мне нужен способ, чтобы запретить IP-адреса плохих пользователей, а также я хотел отобразить всех пользователей, которые находятся в сети на карте (как точка на карте). Мне не нужна помощь, позже мне понадобится помощь в получении IP-адреса клиента.

Я использую Spring WebFlux WebSocket.

РЕДАКТИРОВАТЬ: я создал запрос функции: https://jira.spring.io/browse/SWF-1728

3 ответа

Решение

На основе сервлетов WebSocketSession объект действительно предоставляет эту информацию. Это, кажется, отсутствует в реактивном аромате.

Вы должны создать проблему Spring Framework, чтобы запросить это как расширение.

Я сделал это

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

    return null;
}

Вы можете найти IP-адрес, используя HttpServletRequest, например,

 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();
    }

В WebSocketSession есть метод getRemoteAddress(), вы можете получить удаленный адрес, используя любую его реализацию.

Другие вопросы по тегам