FilterRegistrationBean

FilterRegistrationBean

我需要将基于Spring Boot的应用程序的嵌入式tomcat限制为某些ip地址。我只允许来自两个IP地址的传入连接,而不是全部。
我知道如何在未运行嵌入式Tomcat的情况下执行此操作,但不知道在Spring Boot中配置此方法的方法。各种server.tomcat.*属性似乎对此不提供支持。有属性server.address,使我可以绑定(bind)到本地ip地址,但这不是我所需要的。

最佳答案

找到了答案寻找相同的解决方案。这是在Spring Boot中执行此操作的更准确的方法。

@Bean
public FilterRegistrationBean remoteAddressFilter() {

    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
    RemoteAddrFilter filter = new RemoteAddrFilter();

    filter.setAllow("192.168.0.2");
    filter.setDenyStatus(404);

    filterRegistrationBean.setFilter(filter);
    filterRegistrationBean.addUrlPatterns("/*");

    return filterRegistrationBean;

}

默认响应是403。要将其更改为404,请添加filter.setDenyStatus(404);
您也可以使用filter.setDeny("192\\.168\\.0\\.2");设置拒绝地址

RemoteAddressFilter Docs for Tomcat

09-04 08:45