0

在我的项目中,我想在我的 JSF Web 应用程序中限制直接 URL 访问。虽然我在网上找到了它,它给出了在 web.xml 中配置安全约束的建议。

   <security-constraint>
    <display-name>Restrict raw XHTML Documents</display-name>
    <web-resource-collection>
        <web-resource-name>XHTML</web-resource-name>
        <url-pattern>/manage/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint />
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

这样,我可以限制对/manage/*.jsp. 但是我有很多文件夹要限制,例如/view/*.jsp/others/*.jsp等。我想在发生错误时显示错误页面。

4

2 回答 2

1

您现在可能已经想出了解决方案,但想到了回答它。

实现限制的方法是将所有 url 模式作为 web-resource-collection 的一部分。您可以在没有 auth-constraint 的情况下定义另一个 security-constraint 以允许直接访问,如下所示。

    <security-constraint>
        <display-name>Restrict raw XHTML Documents</display-name>
        <web-resource-collection>
            <web-resource-name>XHTML</web-resource-name>
            <url-pattern>/manage/*</url-pattern>
            <url-pattern>/view/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint />
        <user-data-constraint>
            <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

<security-constraint>
    <display-name>Allow login pages</display-name>
    <web-resource-collection>
        <web-resource-name>Seam</web-resource-name>
        <url-pattern>*.seam</url-pattern>
        ...<!-- You can define all the url-patterns you want to allow direct access to -->

    </web-resource-collection>

</security-constraint>

您使用的是空的 auth-constraint,这意味着无论身份验证如何,它都会阻止对列出的所有 URL 模式的直接访问。您将收到 403 错误,您可以使用错误页面标签为其定义一个页面

<error-page>
    <error-code>403</error-code>
    <location>/path/to/error.jsp</location>
    </error-page>

否则,您可以使用错误页面标签来定义错误 jsps。

<error-page>
<exception-type>anyexception class name</exception-type>
<location>/path/to/error.jsp</location>
</error-page>
于 2020-05-05T06:54:00.970 回答
0

一种方法是将 jsp 文件移动到 web-inf 目录中,这将阻止直接 url 访问

于 2013-09-13T08:38:56.433 回答