Java 验证IP合法性,获取Request请求源的Ip地址

1、前言

         有时候我们需要在服务多记录请求用的的IP地址等相关信息,从而来做一些事情,比如:过滤、拦截等。

         下边直接贴源码:

2、通过request获取ip地址

public static String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-AuthenticationIp");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-AuthenticationIp");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
}

3、有时候我们需要根据用户输入的ip来验证合法性。

          最近,我在做一个网关项目的时候,需要设置ip黑白名单,就需要设置Ip,从而需要验证Ip的合法性:

/**
 * 验证IP是否合法
 * @param ip
 * @return
 */
public static boolean ipValidate(String ip) {
    if (StringUtils.isEmpty(ip)) return false;
    // 定义正则表达式
    String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
            + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
            + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
            + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
    // 判断ip地址是否与正则表达式匹配
    return ip.matches(regex);
}

4、说明:

          欢迎关注本人微信公众号:程序员刊(javamanual),每人分享Java技术干货、微服务、大数据、Python等等。

       

Java 验证IP合法性,获取Request请求源的Ip地址_第1张图片标微信公众号:程序员刊(javamanual)标题题

 

 

你可能感兴趣的:(AI:Java核心基础)