spring boot对IP地址设置黑白名单的项目实践
更新时间:2025年07月13日 11:07:47 作者:程序员阿明
本文主要介绍了spring boot对IP地址设置黑白名单的项目实践,通过YML配置文件定义过滤器类并注册FilterConfig来实现访问控制,具有一定的参考价值,感兴趣的可以了解一下
1、在yml配置文件中
ip: whitelist: IP1 #白名单 blacklist: IP2 #黑名单
2、定义过滤器类
@Component
public class IpFilter implements Filter {
//白名单IP列表
private List<String> whitelist;
//黑名单IP列表
private List<String> blacklist;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//获取上下文信息
ServletContext context = filterConfig.getServletContext();
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
Environment environment = ctx.getBean(Environment.class);
//赋予初值
whitelist = Arrays.stream(environment.getProperty("ip.whitelist").split(","))
.map(String::trim)
.collect(Collectors.toList());
blacklist=Arrays.stream(environment.getProperty("ip.blacklist").split(","))
.map(String::trim)
.collect(Collectors.toList());
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String ip = httpRequest.getRemoteAddr();
if (whitelist.contains(ip)) {
// 白名单IP,直接通过
chain.doFilter(request, response);
} else if (blacklist.contains(ip)) {
// 黑名单IP,拒绝访问
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "IP is in blacklist");
} else {
// 非黑白名单IP,根据业务需求处理(例如:允许或拒绝)
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
// 清理资源,如果有的话
}
}
3、注册config类FilterConfig
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<IpFilter> ipFilterRegistration() {
FilterRegistrationBean<IpFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new IpFilter());
registrationBean.addUrlPatterns("/*"); // 设置过滤器拦截的路径
registrationBean.setName("ipFilter");
registrationBean.setOrder(1); // 设置过滤器的顺序
return registrationBean;
}
}
到此这篇关于spring boot对IP地址设置黑白名单的项目实践的文章就介绍到这了,更多相关springboot IP黑白名单内容请搜索脚本之家以前的文章或继续浏
相关文章
Mybatis中关于自定义mapper.xml时,参数传递的方式及写法
这篇文章主要介绍了Mybatis中关于自定义mapper.xml时,参数传递的方式及写法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
Spring中@Repository注解的作用和用法以及和@Mapper的区别详析
这篇文章主要给大家介绍了关于Spring中@Repository注解的作用和用法以及和@Mapper的区别的相关资料,注解的作用是标识一个类为数据访问对象,并由Spring框架进行实例化和管理,需要的朋友可以参考下2023-09-09
IDEA创建Servlet编写HelloWorldServlet页面详细教程(图文并茂)
在学习servlet过程中参考的教程是用eclipse完成的,而我在练习的过程中是使用IDEA的,在创建servlet程序时遇到了挺多困难,在此记录一下,这篇文章主要给大家介绍了关于IDEA创建Servlet编写HelloWorldServlet页面详细教程的相关资料,需要的朋友可以参考下2023-10-10


最新评论