В калитке объедините калитку: ссылка с IAuthorizationStrategy - PullRequest
4 голосов
/ 25 мая 2010

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

<div class="siteMenu">
<wicket:link>
    <a href="Page1.html" class="siteMenuLink">
        <wicket:message key="pages.page1.title" />
    </a>
    <a
        href="Page2.html" class="siteMenuLink">
        <wicket:message key="pages.page2.title" />
    </a>
    <a
        href="Page3.html" class="siteMenuLink">
        <wicket:message key="pages.page3.title" />
    </a>
</wicket:link>
</div>

, которые автоматически подбираются и расширяются с использованием механизма wicket:link (как здесь: http://wicket.apache.org/examplenavomatic.html). Однако IAuthorizationStrategy может не разрешать одну или несколько из этих целевых страниц, поэтому я могу получить либо множество ссылок, которые ведут к страницам с «отказом в разрешении», либо множество деактивированных ссылок (т. Е. Теги em или тому подобное), ни один из которых не является симпатичным.

Я, конечно, мог бы написать IComponentInstantiationListener, который проверяет все BookmarkableLinks, чтобы увидеть, доступна ли их цель через IAuthorizationStrategy, и делает их невидимыми в противном случае, но мне интересно, есть ли выход решение этой проблемы. Для пояснения: я использую только isInstantiationAuthorized() метод IAuthorizationStrategy.

1 Ответ

3 голосов
/ 25 мая 2010

На самом деле, я был слепым. Ответ очевиден. Расширьте стратегию авторизации, чтобы проверить ссылки на страницы, а затем используйте IUnauthorizedComponentInstantiationListener, чтобы сделать их невидимыми

...