如何避免用户访问JSF中的.xhtml页面?
我是JSF的新手,首先编写简单的jsf Web应用程序。
带有.jsf的URL映射到WebContent中的.xhtml文件,但为什么我可以在具有所有jsf标签的Web浏览器中打开.xhtml。如何保护它?
我是JSF的新手,首先编写简单的jsf Web应用程序。
带有.jsf的URL映射到WebContent中的.xhtml文件,但为什么我可以在具有所有jsf标签的Web浏览器中打开.xhtml。如何保护它?
您可以添加安全约束来阻止对 的所有请求。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>
除了定义一个阻止直接访问文件,如 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 文件,但无论如何,这样的页面都应该命名:).xhtml
FacesServlet
.html