增加白名单配置
This commit is contained in:
@@ -39,16 +39,19 @@ import java.util.stream.Collectors;
|
||||
public class IpFilter extends OncePerRequestFilter implements ApplicationRunner {
|
||||
|
||||
public static List<String> whiteIps = new ArrayList<>();
|
||||
public static Boolean enableWhiteIp = false;
|
||||
|
||||
@Resource
|
||||
private IpWhitelisttMapper ipWhitelisttMapper;
|
||||
@Resource
|
||||
private ParamConfMapper paramConfMapper;
|
||||
private Boolean enableWhiteIp = false;
|
||||
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
|
||||
if (enableWhiteIp && CollectionUtils.isEmpty(whiteIps)) {
|
||||
syncWhiteIps();
|
||||
}
|
||||
String ip = IpUtils.getIpAddress(request);
|
||||
if (!enableWhiteIp || CollectionUtils.isEmpty(whiteIps) || whiteIps.contains(ip)) {
|
||||
chain.doFilter(request, response);
|
||||
@@ -56,7 +59,7 @@ public class IpFilter extends OncePerRequestFilter implements ApplicationRunner
|
||||
}
|
||||
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
|
||||
response.setContentType(MediaType.TEXT_PLAIN_VALUE);
|
||||
response.getWriter().println("此ip禁止访问");
|
||||
response.getWriter().println("this ip is forbidden");
|
||||
response.getWriter().flush();
|
||||
}
|
||||
|
||||
@@ -71,15 +74,19 @@ public class IpFilter extends OncePerRequestFilter implements ApplicationRunner
|
||||
enableWhiteIp = Objects.equals("true", conf.getValue());
|
||||
}
|
||||
if (enableWhiteIp) {
|
||||
List<IpWhitelist> list = ipWhitelisttMapper.selectList(
|
||||
new LambdaQueryWrapper<IpWhitelist>()
|
||||
.eq(IpWhitelist::getScope, "global")
|
||||
.eq(IpWhitelist::getStatus, EnableStatus.ENABLED.getCode())
|
||||
);
|
||||
whiteIps = list.stream().map(IpWhitelist::getIp).collect(Collectors.toList());
|
||||
syncWhiteIps();
|
||||
}
|
||||
}, 0L, 5L, TimeUnit.MINUTES);
|
||||
}
|
||||
|
||||
|
||||
private void syncWhiteIps() {
|
||||
List<IpWhitelist> list = ipWhitelisttMapper.selectList(
|
||||
new LambdaQueryWrapper<IpWhitelist>()
|
||||
.eq(IpWhitelist::getScope, "global")
|
||||
.eq(IpWhitelist::getStatus, EnableStatus.ENABLED.getCode())
|
||||
);
|
||||
whiteIps = list.stream().map(IpWhitelist::getIp).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user