2011-10-14 3 views

Répondre

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

Si ce pas 'httpReq.getRemoteAddr()'? –

+1

'getRemoteAddr()' retournera l'adresse IP brute, tandis que 'getRemoteHost()' retournera le nom de l'adresse résolue si possible (ou l'adresse IP sinon). – tetsuo

3

Sous WebClientInfo pour fournir une méthode publique que les délégués sur WebClientInfo.getRemoteAddr() protégé. Ensuite, créez une méthode pour l'interroger dans une classe personnalisée RequestCycle. En Wicket j'ai réalisé 01.03 au 01.04 par ce sous-classement RequestCycle, mais avec 1,5 il semble les choses sont différentes: RequestCycle in Wicket 1.5

WebClientInfo a l'avantage d'interroger le X-Forwarded-For paramètre erquest, et renvoie l'adresse IP appropriée si votre serveur est derrière un proxy/équilibreur de charge qui utilise XFF.

+0

Comment obtenir une instance de WebClientInfo dans Wicket 6? – Artem

+0

@Artem Regardez le code dans org.apache.wicket.markup.html.pages.BrowserInfoPage pour des informations détaillées – mrak

2

En utilisant Wicket 6 et 7, vous pouvez effectuer les opérations suivantes:

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