首页 > 解决方案 > 从 Quarkus 内部获取请求者 IP 地址

问题描述

因此,让我首先尝试解释我的需求和用例,以便轻松围绕我的请求:

我们正在建立一个基于 Quarkus 的投票系统,并且必须在某些条件下限制选民能够投票,例如他注册了他住在法国但请求来自赞比亚。

为此,我们正在考虑获取请求的 IP 地址,并在 ip2location.com 的帮助下,我们计划确定选民的位置。我看到获取 IP 地址的唯一提及是在有关日志记录的示例代码中,我发现没有人能够从要处理的代码中获取它(在我们的例子中,获取 IP,调用 ip2location 服务,与数据库匹配,拒绝或验证投票)。

那么如何从使用 Quarkus 构建的应用程序中获取该 IP 地址呢?

@Inject HttpServletRequest 或 @Inject HttpRequest 绝对不起作用。

问候,D.

标签: requestip-addressquarkus

解决方案


您可以使用:

   @Context
   HttpServerRequest request;

...


   request.remoteAddress();

在 JAX-RS 资源类中。

但如果你在代理后面,即使这样也不够。在这种情况下,您可能需要阅读X-Forwarded-ForHTTP 标头。


推荐阅读