Как получить клиентский IP? - PullRequest
24 голосов
/ 15 марта 2012

Хотя это звучит глупо, я не смог найти способ получить IP-адрес клиента в Play 2.0.Он был доступен в 1.2.x как Http.Request.remoteAddress, но 2.0 (я в первую очередь проверил API Scala, но я также быстро проверил Java) предоставляет информацию о серверной стороне запроса только в play(.api).mvc.Request,Я что-то упускаю?Ближайший хак, о котором я могу подумать сейчас, это настроить его за обратным прокси и затем проверить X-Forwarded-For, но это не слишком хорошо работает в dev.

Ответы [ 2 ]

13 голосов
/ 21 марта 2012

РЕДАКТИРОВАТЬ: Возвращаясь к этому ответу, он был добавлен в playframework 2.0.2: см. Объявление о выпуске на https://groups.google.com/forum/#!msg/play-framework/Z97GQ2VnR5M/T-STGaeuN68J%5B1-25%5D и, что более важно, документацию API на http://www.playframework.org/documentation/api/2.0.2/scala/index.html#play.api.mvc.Request

Как вы можете видетьтеперь есть поддержка Request.remoteAddress

Оригинал:

В настоящее время в трекере есть открытая ошибка: https://play.lighthouseapp.com/projects/82401/tickets/256-add-back-requestheaderremoteaddress

Я думаю, что взлом плей2.0 библиотек для включения связанного патча в настоящее время является лучшим выбором.Это, вероятно, все еще чище, чем использовать прокси с единственной целью добавления заголовков XFF и их использования для определения IP.

8 голосов
/ 20 марта 2012

Пожалуйста, проверьте этот проект Github на https://github.com/orefalo/play2-xforward

Я взял код из Play1 и перенес его в Play2, он должен работать так же.

Все еще в процессе работы ...

...