gpt4 book ai didi

java - 在 spring boot security 中获取客户端 ip 地址

转载 作者:行者123 更新时间:2023-12-02 02:58:34 26 4
gpt4 key购买 nike

这是我的第一个问题,如果有不对的地方,请大家指正。
我正在开发具有 spring boot 安全性的 spring boot 应用程序。我使用 RestController 创建我的 API。
我需要记录所有尝试访问我的 API 的客户端的 IP 地址,即使他们没有经过身份验证。
我可以在身份验证后或客户端通过此访问公共(public) API 时获取客户端的 IP(从 HttpServletRequest 获取):

    @GetMapping("/api/public/getDeviceList")
public List<Device> getDeviceList(HttpServletRequest httpServletRequest) {
System.out.println(httpServletRequest.getRemoteHost());
}

但是当客户端使用错误的凭据访问私有(private) API 时,我无法获得这些 IP 地址。
我怎样才能检索到这些信息?

最佳答案

getRemoteHost() 方法以字符串形式返回客户端系统的名称。

getRemoteAddr() 方法返回访问您的 Java web 应用程序的客户端的 IP 地址

在你的方法 Controller 上试试这个

System.out.println(httpServletRequest.getRemoteAddr());

如果您的服务器是本地服务器,它将返回给您 0:0:0:0:0:0:0:1 但如果您在本地网络上的另一台计算机上测试,正确的 ip 应该显示,例如 192.168.1.4

关于java - 在 spring boot security 中获取客户端 ip 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60535579/

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