重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文实例为大家分享了java实现获取本机IP地址的具体代码,供大家参考,具体内容如下
创新互联专注于企业营销型网站建设、网站重做改版、萝北网站定制设计、自适应品牌网站建设、H5页面制作、商城开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为萝北等各大城市提供网站开发制作服务。
原因:同一台机子上开着两个web工程,现在有需求需要保证两个项目之间交互的安全问题。因为有个旧的项目,所以尽量不做改动。只能在新项目中做改动。
处理办法:获取本地的IP地址,有请求进来时查看请求的来源,只有来源是本地IP的才予以通过。
代码如下:
/** * 任务调度调用拦截器 */ public class TaskControlInterceptor implements Interceptor { //存放本机IP地址列表(包括ipv4和ipv6) private static SetlocalHostList = new HashSet<>(); @Override public void intercept(Invocation inv) { Controller controller = inv.getController(); HttpServletRequest request = controller.getRequest(); /* 获取本机的IP地址列表 请求的时候判断来源IP地址是否在该列表中,如果不在的话则不予通过 */ if (localHostList.size() == 0) { localHostList = getIpAddress(); } if (StringUtils.isNotBlank(request.getRemoteAddr())) { if (!localHostList.contains(request.getRemoteAddr())) { Result result = new Result(new Error("450","非法的请求,请求来源IP地址不是本机")); controller.getResponse().setStatus(450); controller.renderJson(result); return; } } else { Result result = new Result(new Error("450","非法的请求,请求来源IP地址为空")); controller.getResponse().setStatus(450); controller.renderJson(result); return; } inv.invoke(); } /** * 获取本机的IP地址(包括ipv4和ipv6) *
包含回环地址127.0.0.1和0:0:0:0:0:0:0:1 */ private static SetgetIpAddress() { Set ipList = new HashSet<>(); try { Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress ip = null; while (allNetInterfaces.hasMoreElements()) { NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement(); //排除虚拟接口和没有启动运行的接口 if (netInterface.isVirtual() || !netInterface.isUp()) { continue; } else { Enumeration addresses = netInterface.getInetAddresses(); while (addresses.hasMoreElements()) { ip = addresses.nextElement(); if (ip != null && (ip instanceof Inet4Address || ip instanceof Inet6Address)) { ipList.add(ip.getHostAddress()); } } } } } catch (Exception e) { e.printStackTrace(); } return ipList; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。