|
@@ -37,33 +37,36 @@ public class InterfaceLimitFilter extends OncePerRequestFilter {
|
|
|
@Override
|
|
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
|
|
throws ServletException, IOException {
|
|
|
+ checkIp(request,response,filterChain);
|
|
|
+ }
|
|
|
+
|
|
|
+ synchronized void checkIp(HttpServletRequest request,HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException{
|
|
|
String remoteIp = IPUtils.getIpAddr(request);
|
|
|
if (CacheConstants.blacklistMap.get(remoteIp)!=null){
|
|
|
+ log.info(remoteIp+"进入黑名单进行拦截!");
|
|
|
response.setHeader("Access-Control-Allow-Origin", "*");
|
|
|
response.setStatus(410);
|
|
|
response.setContentType("text/html;charset=utf-8");
|
|
|
response.getWriter().write("IP已进黑名单,请联系管理员!");
|
|
|
return;
|
|
|
}
|
|
|
- else{
|
|
|
- if (!InterfaceLimitUtil.checkInterface(request, 1000, 10)) {
|
|
|
- log.info("接口拦截:{} 请求超过限制频率【{}次/{}ms】,IP为{}", request.getRequestURI(), 10,1000, remoteIp);
|
|
|
- // 锁定ip黑名单
|
|
|
- SysBlacklist sysBlacklist = new SysBlacklist();
|
|
|
- sysBlacklist.setIp(remoteIp);
|
|
|
- sysBlacklist.setIpTime(new Date());
|
|
|
- sysBlacklist.setAddBy("SYSTEM");
|
|
|
- SpringUtils.getBean(SysBlacklistService.class).save(sysBlacklist);
|
|
|
- // 将锁定ip加入缓存
|
|
|
- CacheConstants.blacklistMap.put(remoteIp,sysBlacklist.getId());
|
|
|
+ if (!InterfaceLimitUtil.checkInterface(request, 1000, 10)) {
|
|
|
+ log.info("接口拦截:{} 请求超过限制频率【{}次/{}ms】,IP为{}", request.getRequestURI(), 10,1000, remoteIp);
|
|
|
+ // 锁定ip黑名单
|
|
|
+ SysBlacklist sysBlacklist = new SysBlacklist();
|
|
|
+ sysBlacklist.setIp(remoteIp);
|
|
|
+ sysBlacklist.setIpTime(new Date());
|
|
|
+ sysBlacklist.setAddBy("SYSTEM");
|
|
|
+ SpringUtils.getBean(SysBlacklistService.class).save(sysBlacklist);
|
|
|
+ // 将锁定ip加入缓存
|
|
|
+ CacheConstants.blacklistMap.put(remoteIp,sysBlacklist.getId());
|
|
|
|
|
|
- response.setHeader("Access-Control-Allow-Origin", "*");
|
|
|
- response.setStatus(410);
|
|
|
- response.setContentType("text/html;charset=utf-8");
|
|
|
- response.getWriter().write("IP已进黑名单,请联系管理员!");
|
|
|
- return;
|
|
|
- }
|
|
|
- filterChain.doFilter(request, response);
|
|
|
+ response.setHeader("Access-Control-Allow-Origin", "*");
|
|
|
+ response.setStatus(410);
|
|
|
+ response.setContentType("text/html;charset=utf-8");
|
|
|
+ response.getWriter().write("IP已进黑名单,请联系管理员!");
|
|
|
+ return;
|
|
|
}
|
|
|
+ filterChain.doFilter(request, response);
|
|
|
}
|
|
|
}
|