spring boot對(duì)IP地址設(shè)置黑白名單的項(xiàng)目實(shí)踐
1、在yml配置文件中
ip: whitelist: IP1 #白名單 blacklist: IP2 #黑名單
2、定義過(guò)濾器類(lèi)
@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,直接通過(guò) chain.doFilter(request, response); } else if (blacklist.contains(ip)) { // 黑名單IP,拒絕訪問(wèn) HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "IP is in blacklist"); } else { // 非黑白名單IP,根據(jù)業(yè)務(wù)需求處理(例如:允許或拒絕) chain.doFilter(request, response); } } @Override public void destroy() { // 清理資源,如果有的話(huà) } }
3、注冊(cè)config類(lèi)FilterConfig
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean<IpFilter> ipFilterRegistration() { FilterRegistrationBean<IpFilter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new IpFilter()); registrationBean.addUrlPatterns("/*"); // 設(shè)置過(guò)濾器攔截的路徑 registrationBean.setName("ipFilter"); registrationBean.setOrder(1); // 設(shè)置過(guò)濾器的順序 return registrationBean; } }
到此這篇關(guān)于spring boot對(duì)IP地址設(shè)置黑白名單的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)springboot IP黑白名單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏
相關(guān)文章
SpringBoot項(xiàng)目打包成jar后獲取classpath下文件失敗的解決
這篇文章主要介紹了SpringBoot項(xiàng)目打包成jar后獲取classpath下文件失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07SpringBoot基于Mybatis攔截器和JSqlParser實(shí)現(xiàn)數(shù)據(jù)隔離
本文將介紹如何在 Spring Boot 項(xiàng)目中利用Mybatis的強(qiáng)大攔截器機(jī)制結(jié)合JSqlParser,一個(gè)功能豐富的 SQL 解析器,來(lái)輕松實(shí)現(xiàn)數(shù)據(jù)隔離的目標(biāo),本文根據(jù)示例展示如何根據(jù)當(dāng)前的運(yùn)行環(huán)境來(lái)實(shí)現(xiàn)數(shù)據(jù)隔離,需要的朋友可以參考下2024-04-04妙解Java中的回調(diào)機(jī)制(CallBack)
本文以最簡(jiǎn)明扼要的例子將Java的回調(diào)機(jī)制介紹給大家,感興趣的朋友可以參考一下。2016-07-07Springboot項(xiàng)目如何使用apollo配置中心
這篇文章主要介紹了Springboot項(xiàng)目如何使用apollo配置中心,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Java中String類(lèi)常用類(lèi)型實(shí)例總結(jié)
在我們開(kāi)發(fā)中經(jīng)常會(huì)用到很多的常用的工具類(lèi),這里做一個(gè)總結(jié),下面這篇文章主要給大家介紹了關(guān)于Java中String類(lèi)常用類(lèi)型的相關(guān)資料,String類(lèi)代表字符串,需要的朋友可以參考下2021-12-12java書(shū)店系統(tǒng)畢業(yè)設(shè)計(jì) 用戶(hù)模塊(2)
這篇文章主要介紹了java書(shū)店系統(tǒng)畢業(yè)設(shè)計(jì),第二步系統(tǒng)總體設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Springboot集成RabbitMQ死信隊(duì)列的實(shí)現(xiàn)
在大多數(shù)的MQ中間件中,都有死信隊(duì)列的概念。本文主要介紹了Springboot集成RabbitMQ死信隊(duì)列的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09