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

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

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

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,根據(jù)業(yè)務(wù)需求處理(例如:允許或拒絕)
            chain.doFilter(request, response);
        }
    }


    @Override
    public void destroy() {
        // 清理資源,如果有的話
    }
}

3、注冊(cè)config類FilterConfig

@Configuration
public class FilterConfig {
    @Bean
    public FilterRegistrationBean<IpFilter> ipFilterRegistration() {
        FilterRegistrationBean<IpFilter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new IpFilter());
        registrationBean.addUrlPatterns("/*"); // 設(shè)置過濾器攔截的路徑
        registrationBean.setName("ipFilter");
        registrationBean.setOrder(1); // 設(shè)置過濾器的順序
        return registrationBean;
    }

}

 到此這篇關(guān)于spring boot對(duì)IP地址設(shè)置黑白名單的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)springboot IP黑白名單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏

相關(guān)文章

  • Mybatis中關(guān)于自定義mapper.xml時(shí),參數(shù)傳遞的方式及寫法

    Mybatis中關(guān)于自定義mapper.xml時(shí),參數(shù)傳遞的方式及寫法

    這篇文章主要介紹了Mybatis中關(guān)于自定義mapper.xml時(shí),參數(shù)傳遞的方式及寫法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解SpringBoot如何統(tǒng)一處理返回的信息

    詳解SpringBoot如何統(tǒng)一處理返回的信息

    現(xiàn)在的項(xiàng)目是前后端開發(fā)的居多,那么我們?cè)趺炊x接口返回的數(shù)據(jù),怎么使用?Spring?Boot?來統(tǒng)一處理返回的信息呢,本文就來和大家簡單講講
    2023-06-06
  • java 排序算法之選擇排序

    java 排序算法之選擇排序

    本文主要講解了java 排序算法之選擇排序,選擇排序是最簡單直觀的一種算法,想要了解相關(guān)知識(shí)的朋友快來看一看這篇文章吧
    2021-09-09
  • JDBC實(shí)現(xiàn)數(shù)據(jù)庫增刪改查功能

    JDBC實(shí)現(xiàn)數(shù)據(jù)庫增刪改查功能

    這篇文章主要為大家詳細(xì)介紹了JDBC實(shí)現(xiàn)數(shù)據(jù)庫增刪改查功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別詳析

    Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別詳析

    這篇文章主要給大家介紹了關(guān)于Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別的相關(guān)資料,注解的作用是標(biāo)識(shí)一個(gè)類為數(shù)據(jù)訪問對(duì)象,并由Spring框架進(jìn)行實(shí)例化和管理,需要的朋友可以參考下
    2023-09-09
  • 詳解Java中final的用法

    詳解Java中final的用法

    本文主要介紹了Java中final的使用方法,final是java的關(guān)鍵字,本文就詳細(xì)說明一下它的使用方法,需要的朋友可以參考下
    2015-08-08
  • Java防止xss攻擊附相關(guān)文件下載

    Java防止xss攻擊附相關(guān)文件下載

    首先說一下思路,防止這種類似于注入攻擊,就是使用攔截器(Filter)處理特殊字符或過濾特殊字符 今天介紹一個(gè)方法,利用覆蓋Servlet的getParameter方法達(dá)到處理特殊字符的目的來解決(防止)Xss攻擊 web.xml,需要的朋友可以參考下
    2020-02-02
  • java中多線程與線程池的基本使用方法

    java中多線程與線程池的基本使用方法

    在Java中,我們可以利用多線程來最大化地壓榨CPU多核計(jì)算的能力,下面這篇文章主要給大家介紹了關(guān)于java中多線程與線程池基本使用的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Minio環(huán)境部署過程及如何配置HTTPS域名

    Minio環(huán)境部署過程及如何配置HTTPS域名

    MinIO?是一個(gè)對(duì)象存儲(chǔ)系統(tǒng),數(shù)據(jù)需要存儲(chǔ)在宿主機(jī)上,容器的重啟不影響數(shù)據(jù),因此我們需要為?MinIO?創(chuàng)建一個(gè)掛載目錄,用于持久化存儲(chǔ)數(shù)據(jù),本文詳細(xì)介紹了如何部署MinIO,并通過配置反向代理和HTTPS來提升其安全性,感興趣的朋友一起看看吧
    2025-03-03
  • IDEA創(chuàng)建Servlet編寫HelloWorldServlet頁面詳細(xì)教程(圖文并茂)

    IDEA創(chuàng)建Servlet編寫HelloWorldServlet頁面詳細(xì)教程(圖文并茂)

    在學(xué)習(xí)servlet過程中參考的教程是用eclipse完成的,而我在練習(xí)的過程中是使用IDEA的,在創(chuàng)建servlet程序時(shí)遇到了挺多困難,在此記錄一下,這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Servlet編寫HelloWorldServlet頁面詳細(xì)教程的相關(guān)資料,需要的朋友可以參考下
    2023-10-10

最新評(píng)論