2011-10-14 26 views

Respuesta

15
WebRequest req = (WebRequest) RequestCycle.get().getRequest(); 
    HttpServletRequest httpReq = (HttpServletRequest) req.getContainerRequest(); 
    String clientAddress = httpReq.getRemoteHost(); 
+2

¿No debería ser 'httpReq.getRemoteAddr()'? –

+1

'getRemoteAddr()' devolverá la dirección IP sin formato, mientras que 'getRemoteHost()' devolverá el nombre de la dirección resuelta si es posible (o la dirección IP si no es así). – tetsuo

3

Subclase WebClientInfo para proporcionar un método público que los delegados sobre WebClientInfo.getRemoteAddr() protegida. A continuación, cree un método para consultar esto en una clase personalizada RequestCycle. En Wicket 1.3-1.4 que he logrado esta subclase RequestCycle, pero con 1,5 Parece que las cosas son diferentes: RequestCycle in Wicket 1.5

WebClientInfo tiene la ventaja de consultar el parámetro erquest X-Forwarded-For, y devolverá la dirección IP correcta si el servidor es detrás de un proxy/balanceador de carga que usa XFF.

+0

¿Cómo obtengo una instancia de WebClientInfo en Wicket 6? – Artem

+0

@Artem Mire el código en org.apache.wicket.markup.html.pages.BrowserInfoPage para obtener información detallada – mrak

2

El uso peatonal incorporada 6 y 7, se puede hacer lo siguiente:

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