Browse Source

ip黑名单管理

master
zhouyl 1 year ago
parent
commit
eabb7be524
  1. 6
      tp-framework/src/main/java/com/inscloudtech/framework/interceptor/IpAccessInterceptor.java
  2. 10
      tp-functional/src/main/java/com/inscloudtech/functional/service/impl/IpFilterServiceImpl.java

6
tp-framework/src/main/java/com/inscloudtech/framework/interceptor/IpAccessInterceptor.java

@ -5,13 +5,11 @@ import com.inscloudtech.common.utils.ServletUtils;
import com.inscloudtech.common.utils.redis.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Set;
/**
* ip访问拦截
@ -23,7 +21,7 @@ public class IpAccessInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String ip = ServletUtils.getClientIP();
List<String> cacheSet = RedisUtils.getCacheList(Constants.BLACK_IP_LIST);
Set<String> cacheSet = RedisUtils.getCacheSet(Constants.BLACK_IP_LIST);
if (cacheSet.contains(ip)) {
// 在黑名单中直接拒绝访问
log.info("ip:{} 在黑名单中拒绝访问.....", ip);

10
tp-functional/src/main/java/com/inscloudtech/functional/service/impl/IpFilterServiceImpl.java

@ -1,6 +1,7 @@
package com.inscloudtech.functional.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.inscloudtech.common.constant.Constants;
import com.inscloudtech.common.utils.redis.RedisUtils;
@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* cpu信息
@ -27,13 +29,15 @@ public class IpFilterServiceImpl extends ServiceImpl<IpFilterMapper, IpFilter> i
@PostConstruct
void init(){
RedisUtils.setCacheList(Constants.BLACK_IP_LIST,this.list());
System.out.println("初始化ip白名单");
List<IpFilter> list = this.list();
Set<String> collect = list.stream().filter(item -> StrUtil.isNotEmpty(item.getIp()))
.map(IpFilter::getIp).collect(Collectors.toSet());
RedisUtils.setCacheSet(Constants.BLACK_IP_LIST, collect);
}
@Override
public void updateBlackIpList(){
RedisUtils.setCacheList(Constants.BLACK_IP_LIST,this.list());
this.list();
}
}
Loading…
Cancel
Save