欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring boot對(duì)IP地址設(shè)置黑白名單的項(xiàng)目實(shí)踐

 更新時(shí)間:2025年07月13日 11:07:47   作者:程序員阿明  
本文主要介紹了spring boot對(duì)IP地址設(shè)置黑白名單的項(xiàng)目實(shí)踐,通過(guò)YML配置文件定義過(guò)濾器類(lèi)并注冊(cè)FilterConfig來(lái)實(shí)現(xiàn)訪問(wèn)控制,具有一定的參考價(jià)值,感興趣的可以了解一下

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下文件失敗的解決

    這篇文章主要介紹了SpringBoot項(xiàng)目打包成jar后獲取classpath下文件失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringBoot基于Mybatis攔截器和JSqlParser實(shí)現(xiàn)數(shù)據(jù)隔離

    SpringBoot基于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)

    妙解Java中的回調(diào)機(jī)制(CallBack)

    本文以最簡(jiǎn)明扼要的例子將Java的回調(diào)機(jī)制介紹給大家,感興趣的朋友可以參考一下。
    2016-07-07
  • Java中的三種代理模式詳解

    Java中的三種代理模式詳解

    這篇文章主要介紹了Java中的三種代理模式詳解,代理模式的關(guān)鍵點(diǎn)是:代理對(duì)象與目標(biāo)對(duì)象.代理對(duì)象是對(duì)目標(biāo)對(duì)象的擴(kuò)展,并會(huì)調(diào)用目標(biāo)對(duì)象,文中提供了部分代碼,需要的朋友可以參考下
    2023-08-08
  • Springboot項(xiàng)目如何使用apollo配置中心

    Springboot項(xiàng)目如何使用apollo配置中心

    這篇文章主要介紹了Springboot項(xiàng)目如何使用apollo配置中心,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java中String類(lèi)常用類(lèi)型實(shí)例總結(jié)

    Java中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-12
  • 深入理解Java設(shè)計(jì)模式之觀察者模式

    深入理解Java設(shè)計(jì)模式之觀察者模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之觀察者模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • java書(shū)店系統(tǒng)畢業(yè)設(shè)計(jì) 用戶(hù)模塊(2)

    java書(shū)店系統(tǒng)畢業(yè)設(shè)計(jì) 用戶(hù)模塊(2)

    這篇文章主要介紹了java書(shū)店系統(tǒng)畢業(yè)設(shè)計(jì),第二步系統(tǒng)總體設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Spring Boot兩種全局配置和兩種注解的操作方法

    Spring Boot兩種全局配置和兩種注解的操作方法

    Spring Boot使用一個(gè)application.properties或者application.yaml的文件作為全局配置文件,本文重點(diǎn)給大家介紹Spring Boot兩種全局配置和兩種注解的配置方法,感興趣的朋友一起看看吧
    2021-06-06
  • Springboot集成RabbitMQ死信隊(duì)列的實(shí)現(xiàn)

    Springboot集成RabbitMQ死信隊(duì)列的實(shí)現(xiàn)

    在大多數(shù)的MQ中間件中,都有死信隊(duì)列的概念。本文主要介紹了Springboot集成RabbitMQ死信隊(duì)列的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論