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,根據業(yè)務需求處理(例如:允許或拒絕)
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黑白名單內容請搜索腳本之家以前的文章或繼續(xù)瀏
相關文章
Java?中的?getDeclaredFields()使用與原理解析
在Java反射機制中,getDeclaredFields()用于獲取類的所有字段,包括私有字段,通過反射,可以在運行時動態(tài)地獲取類的信息并操作其成員,本文詳細介紹了getDeclaredFields()的使用方法、工作原理以及最佳實踐,涵蓋了反射的基本概念、使用場景和注意事項,感興趣的朋友一起看看吧2025-01-01
elasticsearch索引的創(chuàng)建過程index?create邏輯分析
這篇文章主要介紹了elasticsearch索引核心index?create,索引的創(chuàng)建過程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04

