虽然这听起来很傻,但我还没有找到在 Play 2.0 中获取客户端 IP 的方法。它在 1.2.x 中可用Http.Request.remoteAddress
,但 2.0(我主要检查了 Scala API,但我也快速检查了 Java API)似乎只提供了有关请求的服务器端的信息play(.api).mvc.Request
。有什么我想念的吗?我现在能想到的最接近的 hack 是将其设置在反向代理后面,然后检查X-Forwarded-For
,但这在 dev 中效果不佳。
2 回答
编辑:回到这个答案,这是在 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 的代理更清洁。
请在https://github.com/orefalo/play2-xforward查看这个 Github 项目
我从 Play1 中获取代码并将其移植到 Play2,它应该可以正常工作。
仍在进行中的工作...