我需要根据tomcat 7.0.39上的客户端IP控制URL访问 这是我发现的 http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter
但是我无法理解它。 你有任何其他的例子,总统等。
我真正需要的是允许所有IP访问,例如。 "http://base_url/a/b/c"
并允许localhost / 127.0.0.1访问"http://base_url/a"
我无法理解如何匹配“任何”IP,或者我需要在过滤器中使用多个过滤器或多个条目。
感谢。
答案 0 :(得分:1)
实际上,您只需要保护/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>
答案 1 :(得分:0)
如果您编写的过滤器不能按照您期望的方式工作,您可以使用javax.servlet.Filter API(http://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html)始终实现自己的过滤器。
这里有几个例子:
编写Servlet过滤器非常简单,您可以使其实现的不仅仅是IP过滤。
答案 2 :(得分:0)
谢谢大家,
最终我创建了自己的过滤器 这是如何:
BR。