• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解Java Web如何限制访问的IP的两种方法

java 搞代码 4年前 (2022-01-09) 15次浏览 已收录 0个评论

前一阵子因为在做项目时碰到了这个功能,现在好好总结一下,至于为什么要限制IP访问,我就不多说了。然后百度了一下,现在主要有两种方式去限制IP访问,第一种是最简单的方便的,第二种是通过过滤器来限制访问。下面我简单介绍一下第一种方式,着重介绍第二种。

第一种方式(Tomcat配置项配置允许或限制IP访问)

这种是最简单的快捷的,主要就涉及Tomcat的server.xml配置。

第一步:找到server.xml文件在哪,在Tomcat的目录下的conf文件夹下。
第二步:打开server.xml文件,找到Host节点,在其中加上:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" 
	allow="127.0.0.1" 
	deny=""/>

其中:
className:表示java类名,必须是
org.apache.catalina.valves.RemoteHostValve或org.apache.catalina.valves.RemoteAddrValve;
allow:表示允许的IP,支持模糊(* )、正则,多个用,隔开;
deny:表示限制的IP,支持模糊(
*)、正则;多个用,隔开。
注:如果是限制某一个站点(网站)则在Context节点中添加。
第三步:重启Tomcat。

第二种方式(通过Filter过滤器来配置允许或限制IP访问)

(1)代码实现的思路
  通过增加配置文件properties,将允许访问的IP按一定规则配置进去;接下来再对配置文件(这里尚且叫做配置文件)进行加载;然后再对配置文件的格式要求通过正则进行校验;其次将配置的IP通过一个集合进行收集,可收集单条IP或一个IP的正则,因为我们这里需要用到模糊;最后对访问者的IP与集合中的进行比对,比对通过则正常访问,否则。反之。
  在配置文件中提供三种最常见的IP配置方式:

单个IP地址的配置,多个之间用逗号或分好隔开;
例如:192.168.1.50;127.0.0.1;IP地址区间方式的配置,多个区间用逗号或分好隔开;
例如:172.20.32.10-172.20.32.11;172.20.32.88-172.20.32.89通配符,多个用逗号或分好隔开。
例如:172.20.30.*

(2)具体实现代码
第一步:编写配置文件/Test/src/com/config/ipConfig.properties;

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

#IP地址区间方式的配置,多个区间用逗号或分好隔开
allowIPRange=172.20.32.10-172.20.32.11;172.20.32.88-172.20.32.89

#通配符,多个用逗号或分好隔开
allowIPWildcard=172.20.30.*;

第二步:新建Java类实现Filter;
第三步:在web.xml中配置过滤器;

<!-- 过滤器 -->
 
 <!-- ip过滤器,过滤所有请求地址 -->
 <filter>
 	<filter-name>IPFilter</filter-name>
 	<filter-class>com.filter.IpFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>IPFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 
 <!-- 结束过滤器 -->

第四步:我们需要声明一个全局变量List来存放允许访问的IP或正则式;

//声明的代码:
//用来存放允许访问的ip
private List<String> allowList = new ArrayList<String>();

第五步:需要对配置文件进行加载;在方法init中

//加载的代码:
//将文件转化成流
InputStream inputStream = IpFilter.class.getResourceAsStream("../config/ipConfig.properties");
		
Properties propert<i>本文来源gaodai$ma#com搞$代*码网2</i>ies = new Properties();
		
//通过Properties对象实例加载流
properties.load(inputStream);
		
//获取三种配置方式的值
String allowIP = properties.getProperty("allowIP");
String allowIPRange = properties.getProperty("allowIPRange");
String allowIPWildcard = properties.getProperty("allowIPWildcard");

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解Java Web如何限制访问的IP的两种方法
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址