【问题标题】:How can I capture user IP address in dspace?如何在 dspace 中捕获用户 IP 地址?
【发布时间】:2015-04-11 06:02:59
【问题描述】:

我想在从 dspace 下载比特流时捕获用户的 IP 地址。我已使用此代码成功捕获了用户的“全名”:

        EPerson loggedin = context.getCurrentUser();
        String eperson = null;
        if (loggedin != null)
        {
            eperson = loggedin.getFullName();
        }
        else eperson = "Anonymous";

现在,我还想像从 控制面板 > 当前活动中看到的那样捕获 IP 地址。请告知我该如何实现这一目标以及我应该使用什么方法?

编辑: 我将在封面页功能中实现这一点(在 DSpace 5,xmlui 中可用),如果用户没有登录或者是匿名用户(例如通过 [用户的 IP 地址] 下载),则在下载时将显示用户的 IP 地址PDF。带有来自Taylor and Francis 的封面的 PDF 示例。请注意文章封面的第一行:这篇文章的下载者:[您的 IP 地址]

请注意,我对 java 的了解非常有限,如果有任何建议和帮助,我将很高兴。

提前致谢。

更新

我尝试使用 post 中的 answer,但是当我进行 mvn 构建时,我遇到了这个错误:

method getClientIpAddr in class CoverPage cannot be applied to given types;
[ERROR] required: javax.servlet.http.HttpServletRequest
[ERROR] found: no arguments

如果你能帮我解决这个问题,我将不胜感激,我删除了我对这篇文章的回答,因为它会返回服务器的外部 IP,而不是客户端的 IP 地址。

【问题讨论】:

  • 在查看返回 ip 地址的 java 方法之前,我想澄清一些事情。您是在编写将在下载发生时运行的代码,还是在编写代码来报告过去的下载?每次下载的 IP 地址都记录在 solr 统计记录中。您可以构造一个 solr 查询来查找这些记录并通过 ip 地址对结果进行分面。你有能力查询你的 solr 统计 repo 吗?
  • @terrywb,我正在编写的代码是用于封面功能的,因此这意味着下载发生。我想在引文封面页中显示正在下载该比特流的用户的 IP 地址。如果登录,我已成功捕获用户名。我的目标是如果该用户是匿名的,我将只显示他/她的 IP 地址,就像来自 JSTOR 的那些(请参阅封面页脚)。谢谢

标签: java dspace


【解决方案1】:

从 HttpServletRequest 获取它request.getRemoteAddr() 例如:https://github.com/DSpace/DSpace/blob/master/dspace-api/src/main/java/org/dspace/statistics/SolrLogger.java#L298

在 xmlui 中,如果你有一个对象模型映射(例如 AbstractDSpaceTransformerAction 有它),你可以从 ObjectModelHelper.getRequest(objectmodel) 获取请求。 ObjectModelHelper 为您提供了一个 org.apache.cocoon.environment.Request 对象,该对象具有 getRemoteAddr() 方法,因为它扩展了 javax.servlet.http.HttpServletRequest

【讨论】:

  • 很抱歉,我不知道如何应用这些,尤其是我应该导入哪些文件。我遇到了cannot find symbol 错误,因为我可能使用了错误的导入。我有import javax.servlet.http.HttpServletRequest;,我不知道应该在HttpServletRequest request = 中输入什么值,以便可以使用String ip = request.getRemoteAddr(); 语句。谢谢。
  • 我在答案中添加了确切的参考资料(链接)
  • 感谢 Antoine,但我恐怕现在超出了我的知识范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2019-02-14
  • 1970-01-01
  • 2019-06-03
  • 2010-11-06
相关资源
最近更新 更多