2013-07-08 16 views
0

我知道我可以在Tomcat服務器中的context.xml添加一個閥門,以允許或拒絕某些IP地址:Tomcat服務器IP地址限制方法?

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1" denyStatus="403" />

除了以上配置,有沒有我可以配置IP限制任何其他方法?

例如,我可以使用文本文件或數據庫來存儲用於IP限制的IP地址嗎?

非常感謝!

回答

2

您可以動態註冊Tomcat的遠程地址過濾器。

http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter

它看起來像這樣:

@WebListener 
public class MyServletContextListener implements ServletContextListener { 
    @Override 
    public void contextInitialized(ServletContextEvent sce) { 
    // Get IP addresses from the DB or text file. 
    ... 

    ServletContext sc = sce.getServletContext(); 
    FilterRegistration fr; 
    fr = sc.addFilter("RemoteAddrFilter", "org.apache.catalina.filters.RemoteAddrFilter"); 
    fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); 
    fr.setInitParameter("allow", "127\\.0\\.0\\.1"); 
    fr.setInitParameter("denyStatus", "403"); 
    } 
} 
+0

謝謝您的答覆!我可以知道我建立了這個班後,如何調用這個類中的context.xml ??? ? –

+0

要使上述類工作,您需要Tomcat 7,但不需要任何配置更改。上面的類實現了[ServletContextListener](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html),並用[@WebListener](http://docs.oracle.com /javaee/6/api/javax/servlet/annotation/WebListener.html)。 Tomcat會自動檢測該類並在webapp啓動時調用contextInitialized。 –

+0

再次感謝!其中/我需要修改的文件實際添加類** MyServletContextListener **?它是** bootstrap.jar **在*** C:\ tomcat \ bin \ ***? –