gpt4 book ai didi

java - 如何在 dspace 中捕获用户 IP 地址?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:35 25 4
gpt4 key购买 nike

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

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

现在,我还想捕获从控制面板> 当前 Activity 中看到的IP 地址。请告诉我如何实现这一点以及我应该使用什么方法?

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

请注意,我对 Java 的了解非常有限,非常感谢任何建议和帮助。

提前致谢。

更新

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

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

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

最佳答案

从 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.

关于java - 如何在 dspace 中捕获用户 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28444661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com