Wie erhalte ich die Client-IP?
-
14-12-2019 - |
Frage
Auch wenn das albern klingt, konnte ich in Play 2.0 keine Möglichkeit finden, die IP des Clients abzurufen.Es war in 1.2.x als verfügbar Http.Request.remoteAddress
, aber 2.0 (ich habe in erster Linie die Scala-API überprüft, aber auch die Java-API kurz überprüft) scheint nur Informationen über die Serverseite der Anfrage bereitzustellen play(.api).mvc.Request
.Fehlt mir etwas?Der beste Hack, der mir im Moment einfällt, besteht darin, ihn hinter einem Reverse-Proxy einzurichten und dann zu überprüfen X-Forwarded-For
, aber das funktioniert in der Entwicklung nicht so gut.
Lösung
EDIT: Um auf diese Antwort zurückzukommen: Dies wurde in Playframework 2.0.2 hinzugefügt:siehe Veröffentlichungsankündigung auf https://groups.google.com/forum/#!msg/play-framework/Z97GQ2VnR5M/T-STGaeuN68J%5B1-25%5D und was noch wichtiger ist, die API-Dokumentation unter http://www.playframework.org/documentation/api/2.0.2/scala/index.html#play.api.mvc.Request
Wie Sie sehen, gibt es jetzt Unterstützung für Request.remoteAddress
Original:
Derzeit ist hierfür ein Fehler im Tracker offen: https://play.lighthouseapp.com/projects/82401/tickets/256-add-back-requestheaderremoteaddress
Ich denke, dass es derzeit die beste Lösung ist, die Play2.0-Bibliotheken zu hacken, um den verlinkten Patch einzubinden.Es ist wahrscheinlich immer noch sauberer als die Verwendung eines Proxys mit dem einzigen Zweck, XFF-Header hinzuzufügen und diese zur Ermittlung der IP zu verwenden.
Andere Tipps
Bitte überprüfen Sie dieses Github-Projekt bei https://github.com/orefalo/play2-xforward
Ich habe den Code von Play1 übernommen und portiert, um es zu spielen2, es sollte dasselbe funktionieren.
Immer noch eine Arbeit in Arbeit ...