ipfilter

Spring Cloud Zuul过滤器介绍及使用

旧街凉风 提交于 2020-08-06 04:47:52
过滤器类型 Zuul 中的过滤器跟我们之前使用的 javax.servlet.Filter 不一样,javax.servlet.Filter 只有一种类型,可以通过配置 urlPatterns 来拦截对应的请求。 而 Zuul 中的过滤器总共有 4 种类型,且每种类型都有对应的使用场景。 1)pre 可以在请求被路由之前调用。适用于身份认证的场景,认证通过后再继续执行下面的流程。 2)route 在路由请求时被调用。适用于灰度发布场景,在将要路由的时候可以做一些自定义的逻辑。 3)post 在 route 和 error 过滤器之后被调用。这种过滤器将请求路由到达具体的服务之后执行。适用于需要添加响应头,记录响应日志等应用场景。 4)error 处理请求时发生错误时被调用。在执行过程中发送错误时会进入 error 过滤器,可以用来统一记录错误信息。 请求生命周期 可以通过图 1 看出整个过滤器的执行生命周期, 图 1 过滤器生命周期 通过上面的图可以清楚地知道整个执行的顺序,请求发过来首先到 pre 过滤器,再到 routing 过滤器,最后到 post 过滤器,任何一个过滤器有异常都会进入 error 过滤器。 通过 com.netflix.zuul.http.Zuul Servlet 也可以看出完整执行顺序,ZuulServlet 类似 Spring -Mvc 的

springboot过滤器禁止ip频繁访问

空扰寡人 提交于 2020-04-12 14:58:46
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; /**