Подтвердить что ты не робот

Как получить IP-адрес клиента?

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

4b9b3361

Ответ 1

EDIT: вернувшись к этому ответу, это было добавлено в 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

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

Ответ 2

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

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

Продолжается работа...