如何确保用户无法在SAME计算机上执行某些操作[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何确保用户无法在SAME计算机上执行某些操作[重复]相关的知识,希望对你有一定的参考价值。

我有一个使用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页面试图捕获客户的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接口,因为你通过localhost访问这个JSP。尝试打开http://<your local IP>:<your AS port>

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

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

以上是关于如何确保用户无法在SAME计算机上执行某些操作[重复]的主要内容,如果未能解决你的问题,请参考以下文章

FTP NLST 仅在某些客户端计算机上导致“425:无法打开数据连接进行传输”

操作系统介绍

PySide2和pyinstaller gui应用程序将无法在某些Windows计算机上运行

csharp 如何在try结构中使用finally语句以确保执行某些代码的示例。从计算机编程基础知识

csharp 如何在try结构中使用finally语句以确保执行某些代码的示例。从计算机编程基础知识

重定向并重新加载,即使是同一页面