JSF, условная навигация, не работает - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть правило навигации в конфигурации лиц, которое имеет условие для случая навигации и пытается запретить доступ к странице пользователям, которые не принадлежат к нужным группам.

Предполагается, что страница доступна через меню из любого места приложения, если пользователь имеет правильную группу / роль, и это делается с помощью метода, приведенного ниже, для отображения или не отображения компонентов меню, командных кнопок.и т. д.

То, что я пытаюсь предотвратить, - это случай, когда пользователь может знать полный URL / путь к странице и ввести в браузер, чтобы попытаться получить доступ к странице.

Не можете ли вы использовать параметризованные методы в условном выражении?

Faces-Config entry

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

Вызываемый метод компонента.

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-адрес в полев браузере они могут получить доступ к странице, и отладочное сообщение внутри метода показывает, что возвращаемое значение равно false, когда метод вызывается в случае навигации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...