gpt4 book ai didi

java - 如何确保用户无法在同一台计算机上执行某些操作

转载 作者:行者123 更新时间:2023-12-02 06:24:05 27 4
gpt4 key购买 nike

我有一个使用 Java、JSP 的 Web 应用程序。我想确保用户只能在他/她的同一设备上回答同一问题一次。我尝试检查用户计算机上的 IP 地址。一旦设备IP地址被使用,用户将无法在设备上再次回答相同的问题。

我尝试将 IP 地址捕获为

String ip =  request.getRemoteAddr();
System.out.println("IP Address: "+ip);

但是打印出来的ip如下。IP地址:0:0:0:0:0:0:0:1

请问如何正确捕获用户设备的IP地址?或者有任何更好的方法来确保同一设备不能针对同一问题使用两次或更多次。

提前致谢

更新我将以下代码添加到jsp页面 try catch 客户的IP地址,但我仍然不断获取生产服务器IP地址(我将应用程序上传到生产站点)。你能告诉我为什么吗?我应该获取客户设备的 IP 地址。

提前致谢!

String ip = "";
ip = request.getHeader("X-Forwarded-For");


if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
System.out.println("ip: " +ip);

最佳答案

您将获得环回 IPv6 接口(interface),因为您正在通过 localhost 访问此 JSP 。尝试打开 http://<your local IP>:<your AS port> .

无论如何,要获取远程用户IP,首先检查X-Forwarded-For header 。如果用户通过代理服务器访问您的网络remoteAddr将是代理地址,在此 header 中您可能拥有远程用户地址。

request.getHeader("X-Forwarded-For")

关于java - 如何确保用户无法在同一台计算机上执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55806065/

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