@Resource private StringRedisTemplate stringTemplate;
/*过滤黑名单开始*/
if (stringTemplate.hasKey(IPUtils.getIpAddr(request))) {
forwardIpLimit(response, request, "提示:您的ip已被加入黑名单,解除时间:" + stringTemplate.getExpire(IPUtils.getIpAddr(request))); return false;
}
/*过滤黑名单结束*/
/*全局拦截安全访问处理开始,每秒15次请求即封禁ip*/ try {
RateLimiter limiter = ipRequestCaches.get(IPUtils.getIpAddr(request)); if (limiter.tryAcquire()) { // 获得令牌(不限制访问)接着走下面逻辑判断 //return true; } else { // 未获得令牌(限制访问) //存入redis stringTemplate.opsForValue().set(IPUtils.getIpAddr(request), "100", 60 * 10, TimeUnit.SECONDS);
forwardIpLimit(response, request, "提示:访问过于频繁,您已被拦截。请稍后重试!\n警告:即将触发IP封禁机制!当前IP:" + IPUtils.getIpAddr(request)); return false;
}
} catch (ExecutionException e) {
e.printStackTrace();
}
/*全局拦截安全访问处理结束,每秒15次请求即封禁ip*/
发表评论: