访问JSF中的受保护页面

时间:2014-04-04 11:35:29

标签: java jsf-2 primefaces navigation

我找到了一种方法来保护我的.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)}"/>

我的问题是我通过尝试解决问题提出了另一个问题。如何使用安全约束来访问这些页面?

1 个答案:

答案 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>