java 公网ip白名单认证
获取公网ip工具类(注:只能公网)
public class GetIpUtil {
/**
* 获取请求的公网ip
*/
public static String getIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
}
接收并判断ip是否在白名单内(具体存放ip地址自行考虑,可枚举,可入库)
@ApiOperation("测试接口")
@GetMapping("/ipTest")
public ResultData ipTest(HttpServletRequest request) {
//IP白名单检测
//将请求该接口的请求头数据拿出来
//调用获取公网ip方法
String IpUrl = GetIpUtil.getIp(request);
System.out.println("请求方公网ip为:" + IpUrl);
if (!IpUrl.equals("xxx.xx.xx.xx")) {//判断是否和你设定的白名单ip一致
return ResultData.fail("您的公网ip不在白名单内");
} else {
return ResultData.succ("success");
}
}
