基于java过滤器实现web系统的IP访问控制

一.使用场景

  一般情况下,我们设计web系统都会分别设计前台和后台,前台供普通用户访问,给普通用户提供服务.然后后台给系统管理员使用,用于管理维护前台的数据,以及对一些环境的参数配置.对于后台管理一般都是只给公司内部的员工进行访问,所以我们一般要通过IP来限制访问,实现指定的人群才能够访问后台.

二.实现原理

  1. 把允许访问的IP地址,配置到properties文件里.
  2. 编写过滤器,在过滤器的init方法里读取保存IP白名单的properties文件,把配置的IP地址解析出来,存放到一个List集合中.
  3. 在过滤器的doFilter()方法内,获取访问用户的IP地址,然后将用户IP与List集合中的白名单IP列表逐个匹对,一旦有匹配就放行请求;如果都不匹配,则跳转到拒绝访问页面提示用户.

三.代码实现

  1. IP白名单的配置

一般我们要提供三种配置IP白名单的方式

 1). 单个IP地址的配置,多个之间用逗号或分好隔开

 2). IP地址区间方式的配置,多个区间用逗号或分好隔开,如192.168.1.0-192.168.1.10;192.168.1.20-192.168.1.50

 3). 通配符,多个用逗号或分好隔开,如192.168.0.*

示例如下:

#单个IP地址的配置,多个之间用逗号或分好隔开
allowIP=192.168.0.105;192.168.0.108;127.0.0.1

#IP地址区间方式的配置,多个区间用逗号或分好隔开
allowIPRange=192.168.0.10-192.168.0.20;192.168.0.100-192.168.0.110

#通配符,多个用逗号或分好隔开
allowIPWildcard=192.168.0.*;
  1. 过滤器的编写
package com.legendshop.filter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.regex.Pattern;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.legendshop.exception.IPAccessException;
import com.legendshop.exception.IPFormatException;

public class IPFilter implements Filter {
   
    //用来存放初始化后的IP白名单列表对应的正则表达式
    private List<String> allowRegexList = new ArrayList<S
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值