Как я могу использовать Tapestry-Security? - PullRequest
4 голосов
/ 22 августа 2010

Я обнаружил Tapestry 5 совсем недавно, его четкое разделение между представлением и контроллером, использование стандартизации имени вместо XML заставило меня пойти на это прямо.Честно говоря, я не планирую менять, но мне просто недостаточно документации.

Проект, над которым я работаю, должен поддерживать несколько типов ролей.Я должен разрешить пользователям аутентификацию, использование определенных сервисов в соответствии с их ролями и доступ к URL-адресам по их ролям.

После некоторых исследований я наткнулся на Tapestry-Security , который является частьюпроекта Tynamo.

Я хочу, чтобы уровень моего сервиса был полностью независим от моего веб-приложения, потому что я буду использовать его для реализации веб-сервисов и некоторых других вещей.Мне не хочется делать другую систему идентификации, когда придет время.

Моя проблема в том, что я не вижу, как использовать Tapestry-Security без использования Tapestry. Пример, который они показывают в руководстве по Tapestry-Security, просто недостаточендля меня.У меня есть довольно грубое представление о том, как это работает.Однако я не знаю, как я мог бы использовать его вне Tapestry 5.

Как я могу использовать Tapestry-Security без Tapestry 5?

Я также не понимаю системы фильтрации, используемые в AppModuleкласс в проекте Гобелен.Есть ли документ, который объясняет, как AppModule работает с системой фильтров?

Есть ли кто-то, кто может объяснить мне эти вещи или указать мне правильное направление?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 22 августа 2010

Tapestry-Security - это просто тонкий слой поверх Apache Shiro проекта. Это только обеспечивает:

  • способ настройки Shiro с помощью модуля приложения Tapestry
  • набор фильтров Tapestry для выполнения фактических проверок безопасности для страниц и действий Tapestry
  • аннотации если вы хотите декларативно заявить о своей безопасности
  • компоненты для поддержки условного рендеринга в .tml файлах

Под этим слоем находится обычный экземпляр Shiro, выполняющий всю работу, поэтому вы можете получить доступ к безопасности (например, через класс SecurityUtils ), как обычно, если бы Tapestry вообще не использовался .

Редактирование на основе комментария: Таким образом, хотя вы можете использовать Shiro в любом веб-приложении, которое вы используете, Tapestry-Security на самом деле является просто оболочкой для использования с Tapestry. Однако если у вас есть приложение, которое включает Tapestry вместе с другими сервлетами (например, веб-сервис), вы должны позволить Tapestry-Security выполнить работу по инициализации.

Относительно фильтров Гобеленов: Боюсь, это не очень хорошо задокументировано. Фильтры гобеленов очень похожи на фильтры сервлетов, но поскольку Tapestry реализован как сам фильтр сервлетов , он имеет свою собственную цепочку фильтров. Фильтры для Tapestry реализуют интерфейс RequestFilter .

public class MyFilter implements RequestFilter {

    @Override
    public boolean service(final Request request, final Response response,
            final RequestHandler handler) throws IOException {
        ... //your code
        try {
            return handler.service(request, response);
        } finally {
            ... //your code
        }

    }
}

Вы можете добавить их в цепочку фильтров, добавив их в свой модуль приложения:

public void contributeRequestHandler(
            final OrderedConfiguration<RequestFilter> configurations) {
    configuration.add("MyFilter", new MyFilter());
}
0 голосов
/ 23 апреля 2012

Вы можете прочитать эту статью, чтобы понять, как фильтры используются в классе AppModule http://tapestryjava.blogspot.com/2009/12/securing-tapestry-pages-with.html

...