我有一个JSF Web应用程序,其URL类似于
http://host/app/faces/<page>.xhtml
app 是上下文根, / faces / * 是Servlet URL模式
其中 page 可以是我的应用程序中的任何页面。现在,如果我使用此URL访问任何页面,如果没有某些后端服务的活动会话,我可以在其中重定向 login.xhtml 的地方访问控制器。
如果我从网址中删除 faces 字符串,
http://host/app/<page>.xhtml
然后呈现一些页面的静态内容。
我的问题是如何停止渲染静态内容。
答案 0 :(得分:0)
只需将您的网址格式从.xhtml
更改为.html
并使用安全约束。这将限制对xhtml文件的直接访问。
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<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>*.html</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<welcome-file-list>
<welcome-file>login.html</welcome-file>
</welcome-file-list>
<security-constraint>
<display-name>Restrict direct access to XHTML files</display-name>
<web-resource-collection>
<web-resource-name>XHTML Files</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
</web-app>