如何避免用户访问JSF中的.xhtml页面?

2022-09-04 06:16:47

我是JSF的新手,首先编写简单的jsf Web应用程序。

带有.jsf的URL映射到WebContent中的.xhtml文件,但为什么我可以在具有所有jsf标签的Web浏览器中打开.xhtml。如何保护它?


答案 1

您可以添加安全约束来阻止对 的所有请求。web.xml*.xhtml

<security-constraint>
    <display-name>Restrict raw XHTML Documents</display-name>
    <web-resource-collection>
        <web-resource-name>XHTML</web-resource-name>
        <url-pattern>*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

答案 2

除了定义一个阻止直接访问文件,如 Stacker 在这个问题上正确回答的那样,您还可以将映射从 更改为 。<security-constraint>.xhtml<url-pattern>FacesServlet*.jsf*.xhtml

<servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

在 JSF 1.x 中,这曾经以无限循环结束,但在 JSF 2.x 中不再如此。因此,您可以调用/链接所有页面,而无需摆弄不同的扩展名。唯一的缺点是,如果不调用 ,您将无法显示“普通”XHTML 文件,但无论如何,这样的页面都应该命名:).xhtmlFacesServlet.html


推荐