我在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来访问该页面时,他们便可以访问该页面,并且该方法内部的调试消息显示,当导航情况下会调用方法。