繁体   English   中英

Tomcat7中IP访问的URL访问控制

[英]URL access controll by IP in Tomcat7

我需要根据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或如果我需要多个过滤器或过滤器内的多个条目。

谢谢。

实际上,您需要仅保护/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>

如果您编写的过滤器不能按照您期望的方式工作,您可以使用javax.servlet.Filter API( http://docs.oracle.com/javaee/6/api/javax/)来实现自己的过滤器。 servlet / Filter.html )。

这里有几个例子:

编写Servlet过滤器非常简单,您可以使其实现的不仅仅是IP过滤。

谢谢你们,

最终我创建了自己的过滤器,这是如何:

  • 创建扩展BaseFilter和implament doFilter的类。
  • 必需的jar文件:catalina.jar,servlet_api.jar,tomcat_juli.jar
  • 在do过滤器中运行chain.doFilter意味着继续过滤此连接(如果不存在更多过滤器,则使用它)
  • init方法也可用于从web.xml读取params(放置过滤器配置的地方)
  • 添加你的新jar(使用过滤器到Tomcat的lib目录)将jar名称添加到Tomcat / conf / catalina.properties默认jar扫描程序

BR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM