Tomcat Valve设置

KB2*_*B22 7 java configuration tomcat

我认为我遇到了一些配置问题.我需要保护我的实际tomcat应用程序中的文件夹不受某个IP范围的访问.

我以为这是服务器故障,所以我在那里发布了这个问题.现在我不确定这是SO还是SF呢......

尽管如此,我还是一直在尝试自己去做,并认为我需要设置它

org.apache.catalina.valves.RemoteAddrValve
Run Code Online (Sandbox Code Playgroud)

对于我的那个文件夹.可悲的是,我无法得到我需要的地方.web.xml,server.xml?试过这两个,成功无效.任何人都可以帮我解决这个问题.

TIA

ķ

Ale*_*yak 7

它应该进入<Context>server.xml中的元素:

<Context
    path="/tcadmin"
    docBase="${catalina.home}/server/webapps/admin"
    privileged="true"
>
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="127\.0\.0\.1"
    />
</Context>
Run Code Online (Sandbox Code Playgroud)

请记住,字符串值是正则表达式模式,因此必须使用反斜杠转义特殊的正则表达式字符(例如点(.)).

编辑:回复OP的评论.我认为您需要在Web应用程序中实现FILTER并将其配置为根据其远程地址IP接受或拒绝请求.可以从ServletRequest传递给doFilter方法的对象中检索远程地址.

您在web.xml文件中声明了一个过滤器:

<filter>
  <filter-name>GatekeeperFilter</filter-name>
  <filter-class>your.package.GatekeeperFilter</filter-class>
  <init-param>
    <param-name>allowedNetwork</param-name>
    <param-value>192\.168\.2\.*</param-value>
  </init-param>
</filter>

<filter-mapping>
  <filter-name>GatekeeperFilter</filter-name>
  <url-pattern>/path/to/protected/folder</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

阅读链接文章,了解接受init参数需要做些什么.我认为,对于您的决策,您可以无耻地复制RequestDumperValve中的代码.