你怎么能得到用户的IP PlayFramework2?(How can you get a user

2019-06-25 18:55发布

为了安全起见,有时需要通过IP来阻止用户。 就我而言,我想管理的(SQL)数据库中的IP黑名单。 我想我可以根据动作组成处理过滤器的一部分,但对于我需要的用户的IP。

所以,我怎么能得到用户的IP?

PS:在应用程序运行背后nginx的代理。

Answer 1:

现在,您可以用播放2.0.2+: RequestHeader.remoteAddress()

Java的:

String ip = request().remoteAddress();

斯卡拉:

Action { request =>
    val ip = request.remoteAddress()
}


Answer 2:

如果您的播放! 应用程序是背后nginx的(或任何其他反向代理), request.remoteAddress()将只返回你的nginx的主机的IP地址。 为了找回你应该在nginx的你proxy_pass配置以下客户端的真实IP:

location / {
  proxy_pass        http://play-app:9000;
  proxy_set_header  X-Real-IP  $remote_addr;
}

这将添加客户端IP作为参数传递给头

DOC: Nginx的

然后你的游戏中! 应用程式,你会找回它是这样的:

request.headers.get("X-Real-IP") //In Java
request.headers.get("X-Real-IP") //In Scala

文件: Java的 , 斯卡拉



文章来源: How can you get a user's IP in PlayFramework2 ?