这是我的第一个问题,对不起,如果有问题,请纠正我。)我正在开发具有Spring Boot安全性的Spring Boot应用程序。我使用RestController
创建我的API。我需要记录所有尝试访问我的API的客户端的IP地址,即使它们未经身份验证也是如此。我可以在身份验证后或客户端通过此方法访问公共API时获得客户端的IP(从HttpServletRequest
获取):
@GetMapping("/api/public/getDeviceList")
public List<Device> getDeviceList(HttpServletRequest httpServletRequest) {
System.out.println(httpServletRequest.getRemoteHost());
}
但是当客户端使用错误的凭据访问私有API时,我没有得到这些IP地址。如何获取此信息?
方法getRemoteHost()
以字符串形式返回客户端系统的名称。
getRemoteAddr()
方法返回正在访问您的Java Web应用程序的客户端的IP地址
在您的方法控制器上尝试一下
System.out.println(httpServletRequest.getRemoteAddr());
如果服务器是本地服务器,它将返回0:0:0:0:0:0:0:1
,但是如果您在本地网络上的另一台计算机上进行测试,则应显示正确的IP,例如192.168.1.4