Как вы получаете 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(), вы можете получить удаленный адрес, используя любую его реализацию.