documentation here描述了如何使用IP过滤器保护Form Runner。我按照以下指示进行操作:


将urlrewrite-3.2.0.jar放在Orbeon Forms WEB-INF / lib文件夹中
在Orbeon表单WEB-INF / web.xml中配置过滤器


    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>



urlrewrite.xml配置放在Orbeon WEB-INF文件夹中


    <?xml version="1.0" encoding="utf-8"?>
    <urlrewrite>
        <rule>
            <condition type="remote-addr" operator="notequal">0:0:0:0:0:0:0:1%0</condition>
            <condition type="remote-addr" operator="notequal">127.0.0.1</condition>
            <set type="status">403</set>
            <to type="temporary-redirect" last="true">/unauthorized</to>
        </rule>
    </urlrewrite>


如果我从本地主机访问此URL,则可以按预期工作:

http://myserver.mydomain.com/orbeon/fr/

如果我从其他任何地方访问它,我将无法访问Form Runner,但这很好,但是重定向无法正常工作。我最终被重定向到以下URL,该URL不包含应用程序上下文,因此得到404。

http://myserver.mydomain.com/unauthorized

我尝试将temporary-redirect的值更改为/%{context-path}/unauthorized,但是随后将我重定向到http://orbeon/unauthorized。我也尝试了%{context-path}/unauthorized,但随后出现“重定向过多”错误。

知道我该如何解决吗?

最佳答案

我能够使IP过滤器仅返回403,而无需重定向URL。就我而言,这是更可取的。

<?xml version="1.0" encoding="utf-8"?>
<urlrewrite>
    <rule>
        <condition type="remote-addr" operator="notequal">0:0:0:0:0:0:0:1%0</condition>
        <condition type="remote-addr" operator="notequal">127.0.0.1</condition>
        <set type="status" last="true">403</set>
        <to>null</to>
    </rule>
</urlrewrite>


我在以下示例列表中找到了to>null</to>http://tuckey.org/urlrewrite/manual/4.0/guide.html

09-26 11:55