JSF条件导航案例不起作用

时间:2018-12-04 20:42:23

标签: jsf jsf-2

我在faces配置中有一个导航规则,该导航规则在导航情况下是有条件的,以尝试阻止不属于正确组的用户访问该页面。

如果用户具有正确的组/角色,则应该可以从应用程序中的任何位置使用菜单访问该页面,请使用下面的方法来渲染或不渲染菜单组件,命令按钮等,以小心使用此页面。

我要防止的情况是,用户可能知道页面的完整URL /路径,然后键入浏览器以尝试访问该页面。

您可以在条件中不使用参数化方法吗?

faces-config条目

<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <from-outcome>doc_ordering_manage</from-outcome>
        <if>#{user_Info.userInGroup('APP_DEV_ADMIN','APP_QA_ADMIN','APP_DIST_EDITOR')}</if>
        <to-view-id>/content/pages/docOrderingManagement.xhtml</to-view-id>
    </navigation-case>   
</navigation-rule>

我对from-view-id尝试了以下操作,结果相同。

        <from-view-id>/*.xhtml</from-view-id>
        <from-view-id>*.xhtml</from-view-id>
       <from-view-id>*</from-view-id>

被调用的bean方法。

public boolean userInGroup(String... groupNames){
    boolean retValue = false;
    for(String s : groupNames){
        for(String s2 : this.userGroups){
            if(s.equals(s2)){
                retValue = true;
            }
        }
    }
    Tools.debugMessages("userInGroup returning: " + retValue);
    return retValue;
}

当没有必要组之一的测试人员尝试通过在浏览器中输入URL来访问该页面时,他们便可以访问该页面,并且该方法内部的调试消息显示,当导航情况下会调用方法。

0 个答案:

没有答案