WICKET: как получить ip / адрес клиента - PullRequest
6 голосов
/ 14 октября 2011

Я использую калитку 1.5.1, не могу понять это.

public class MyPage extends WebPage {

public MyPage() {

    String clientAddress = ...?

Ответы [ 3 ]

15 голосов
/ 14 октября 2011
    WebRequest req = (WebRequest) RequestCycle.get().getRequest();
    HttpServletRequest httpReq = (HttpServletRequest) req.getContainerRequest();
    String clientAddress = httpReq.getRemoteHost();
3 голосов
/ 16 октября 2011

Подкласс WebClientInfo для предоставления открытого метода, который делегирует защищенный WebClientInfo.getRemoteAddr().Затем создайте метод для запроса этого в пользовательском RequestCycle классе.В Wicket 1.3-1.4 я добился этого путем создания подкласса RequestCycle, но с 1.5 кажется, что все по-другому: RequestCycle в Wicket 1.5

WebClientInfo имеет преимущество запросаX-Forwarded-For erquest и вернет правильный IP-адрес, если ваш сервер находится за прокси / балансировщиком нагрузки, который использует XFF .

2 голосов
/ 11 сентября 2015

Используя Wicket 6 и 7, вы можете сделать следующее:

String remoteAddress = ((WebClientInfo)Session.get().getClientInfo())
                      .getProperties()
                      .getRemoteAddress();
...