0

我需要根据 tomcat 7.0.39 上的客户端 IP 控制 URL 访问 这是我发现的 http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter

但我无法从中理解所有内容。你有任何额外的例子,totorials等吗?

我真正需要的是允许所有 IP 访问,例如。"http://base_url/a/b/c" 并允许 localhost/127.0.0.1 访问 "http://base_url/a"

我无法理解如何匹配“任何”IP,或者我是否需要多个过滤器或过滤器中的多个条目。

谢谢。

4

3 回答 3

2

实际上,您只需要保护/base_url/a,因为其他地址对所有 IP 开放。定义 2 个过滤器。首先允许通过 IP 进行本地访问,其次允许通过 localhost:

<filter>
  <filter-name>RemoteAddressFilter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
  <init-param>
    <param-name>allow</param-name>
    <param-value>127.0.0.1|::1|0:0:0:0:0:0:0:1</param-value>
  </init-param>
  <init-param>
    <param-name>deny</param-name>
    <param-value>192\.\d+\.\d+\.\d+</param-value>
  </init-param>   
</filter>
<filter-mapping>
  <filter-name>RemoteAddressFilter</filter-name>
  <url-pattern>/a/*</url-pattern>
</filter-mapping>


<filter>
  <filter-name>RemoteHostFilter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteHostFilter</filter-class>
  <init-param>
    <param-name>allow</param-name>
    <param-value>localhost</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>RemoteHostFilter</filter-name>
  <url-pattern>/a/*</url-pattern>
</filter-mapping>
于 2013-05-01T18:37:39.707 回答
0

谢谢你们,

最终我创建了自己的过滤器,方法如下:

  • 创建扩展 BaseFilter 并实现 doFilter 的类。
  • 所需的 jar 文件:catalina.jar、servlet_api.jar、tomcat_juli.jar
  • 在 do 过滤器中运行 chain.doFilter 表示继续过滤此连接(如果不存在更多过滤器,则使用它)
  • 也可以使用 init 方法从 web.xml 读取参数(放置过滤器配置的位置)
  • 添加您的新 jar(将过滤器添加到 Tomcat 的 lib 目录)将 jar 名称添加到 Tomcat/conf/catalina.properties 默认 jar 扫描器

BR。

于 2013-05-06T11:45:07.273 回答