springboot获取当前登录用户的机器IP
  fBdBA9tXzLZY 2023年12月22日 18 0

工作中我们可能需要记录当前操作用户的机器IP信息,下面就是我自己封装的工具,希望可以帮助到大家!

控制器方法:

@RequestMapping(value = "/getIp", method = RequestMethod.POST)

   @ResponseBody

   public String getIp(HttpServletRequest request) {

       return IpUtil.getIpAddr(request);

   }

工具类方法:

public class IpUtil {

   public static String getIpAddr(HttpServletRequest request) {

       String ipAddress = null;

       try {

           ipAddress = request.getHeader("x-forwarded-for");

           if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

               ipAddress = request.getHeader("Proxy-Client-IP");

           }

           if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

               ipAddress = request.getHeader("WL-Proxy-Client-IP");

           }

           if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

               ipAddress = request.getRemoteAddr();

               if (ipAddress.equals("127.0.0.1")) {

                   // 根据网卡取本机配置的IP

                   InetAddress inet = null;

                   try {

                       inet = InetAddress.getLocalHost();

                   } catch (UnknownHostException e) {

                       e.printStackTrace();

                   }

                   ipAddress = inet.getHostAddress();

               }

           }

           // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割

           if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()

                                                               // = 15

               if (ipAddress.indexOf(",") > 0) {

                   ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));

               }

           }

       } catch (Exception e) {

           ipAddress="";

       }

       // ipAddress = this.getRequest().getRemoteAddr();

       

       return ipAddress;

   }

}

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

fBdBA9tXzLZY