springboot2 指定ip_Springboot过滤器禁止ip频繁访问功能实现

本文介绍了如何在Springboot2中创建一个过滤器,用于限制指定IP的频繁访问。通过编写`IpFilter`过滤器和`MyApplicationListener`监听器,初始化存储IP访问信息的容器,并在过滤器中检查并限制访问频率。
摘要由CSDN通过智能技术生成

在开发 Web 项目的时候,经常需要过滤器来处理一些请求,包括字符集转换什么的,记录请求日志什么的等等。在之前的 Web 开发中,我们习惯把过滤器配置到 web.xml 中,但是在 SpringBoot 中,兵没有这个配置文件,该如何操作呢?

1.编写一个过滤器:

import lombok.extern.slf4j.Slf4j;

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.util.Iterator;

import java.util.Set;

import java.util.concurrent.ConcurrentHashMap;

@Slf4j

@WebFilter(urlPatterns="/dyflight/*")

public class IpFilter implements Filter{

/**

* 默认限制时间(单位:ms)3600000,3600(s),

*/

private static final long LIMITED_TIME_MILLIS = 10 * 1000;

/**

* 用户连续访问最高阀值,超过该值则认定为恶意操作的IP,进行限制

*/

private static final int LIMIT_NUMBER = 5;

/**

* 用户访问最小安全时间,在该时间内如果访问次数大于阀值,则记录为恶意IP,否则视为正常访问

*/

private static final int MIN_SAFE_TIME = 5000;

private FilterConfig config;

@Override

public void init(FilterConfig filterConfig) throws ServletException {

this.config = filterConfig; //设置属性filterConfig

}

/* (non-Javadoc)

* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)

*/

@SuppressWarnings("unchecked")

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) servletRequest;

HttpServletResponse response = (HttpServletResponse) servletResponse;

ServletCont

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值