我找到了一种方法来保护我的.xhtml
页面的直接访问权限,方法是在我的web.xml中使用此安全约束:
<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>
但是这似乎限制了我喜欢的web.xml中的我的欢迎文件列表:
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
我也无法通过此方法从bean访问“我的页面”:
public void getBreakEvenProductPage(ComponentSystemEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest origRequest = (HttpServletRequest) context.getExternalContext().getRequest();
String contextPath = origRequest.getContextPath();
try {
FacesContext.getCurrentInstance().getExternalContext()
.redirect(contextPath + "/faces/BreakEvenProfProduct.xhtml");
} catch (IOException e) {
log.debug(Level.FATAL, e);
}
}
上述方法的xhtml:
<p:menuitem value="Break Even Rate Profit report"
action="#{Navigation.getBreakEvenProductPage(event)}"/>
我的问题是我通过尝试解决问题提出了另一个问题。如何使用安全约束来访问这些页面?
答案 0 :(得分:1)
你可以尝试改变
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
到
<welcome-file-list>
<welcome-file>faces/index.jsf</welcome-file>
</welcome-file-list>
并确保您的web.xml中有以下行<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>